A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2011-11-18 09:38  /  2176 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

版主也是要去黑马第五期达?
回复 使用道具 举报
newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)

invoke(Object proxy, Method method, Object[] args)
在代理实例上处理方法调用并返回结果。在与方法关联的代理实例上调用方法时,将在调用处理程序上调用此方法。
回复 使用道具 举报
Proxy(库类)中的newProxyInstance方法被调用,该方法返回一个被代理对象的实例,然后向上转型为其对应的接口。
invoke方法的调用过程,就是先新建其类对象(实例),然后把它传入newProxyInstance方法中,在里面解析并用它来调用invoke方法。
回复 使用道具 举报
其实动态代理就是动态地帮你写了一个代理类,并实现了被代理接口。这个代理类$proxy0的父类把InvocationHandler实现聚合进来(h属性), 这样客户端可以强转成被代理接口(因为代理类也实现了这个接口),调用的时候动态代理类就调用父类的h.invoke()(h也就是你的InvocationHandler实现),h里面再调用target的这个方法,也就是真正的方法调用。从而达到动态调用的作用。

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
黑马谢承强 发表于 2011-11-18 15:56
恩恩,,嘿嘿,多多关照

哈哈 ,嗯,互相关照。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马