免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1917 | 回复: 2
打印 上一主题 下一主题

不懂代理,请大虾讲解一下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-11 13:32 |只看该作者 |倒序浏览
这个是书上的例子,小菜鸟不懂还请大虾解释一下:
import java.lang.reflect.*;
import java.util.*;

public class ProxyTest
{
        public static void main(String[] args)
        {
                Object[]  elements = new Object[1000];
               
                for(int i = 0; i < elements.length; i++)
                {
                        Integer value = i + 1;
                        Class[] interfaces = value.getClass().getInterfaces();
                        InvocationHandler handler = new TraceHandler(value);
                        Object proxy = Proxy.newProxyInstance(null, interfaces, handler);
                        elements = proxy;
                }
               
                Integer key = new Random().nextInt(elements.length) + 1;
               
                int result = Arrays.binarySearch(elements, key);
               
                if(result >= 0)
                        System.out.println(elements[result]);
               
        }
}

class TraceHandler implements InvocationHandler
{
        public TraceHandler(Object t)
        {
                target = t;
        }
       
        public Object invoke(Object proxy, Method m, Object[] args) throws Throwable
        {
                System.out.print(target);
               
                System.out.print("." + m.getName() + "(");
               
                if(args != null)
                {
                        for(int i = 0; i < args.length; i++)
                        {
                                System.out.print(args);
                                if(i < args.length - 1)
                                        System.out.print(", ");
                        }
                }
                System.out.println(")");
               
                return m.invoke(target, args);
               

        }
        private Object target;
}

论坛徽章:
0
2 [报告]
发表于 2007-12-11 13:37 |只看该作者
那个部分有问题?这个是Proxy模式的一个简单例子。建议还是先看一下相关的文章。这个例子如果要讲解的话,基本上等于把Java的反射机制和Proxy的基础理论讲一遍,不如直接看书比较好

论坛徽章:
0
3 [报告]
发表于 2007-12-11 14:10 |只看该作者
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP