本帖最后由 张云杰 于 2013-7-30 00:36 编辑
sub = (Subject)Proxy.newProxyInstance(c.getClassLoader(), sub.getClass().getInterfaces(), handler);//这里是什么意思?还有getInterfaces()这个方法时干什么的?\
这句话的意思是说 创建了代理类的实例对象, 首先c.getClassLoader() 是目标类的类加载器, 然后sub.getClass().getInterfaces() 获取到目标类里所有实现的接口.. 如果传进去的是一个接口的话, 那么.. 就是jiekou.class
最后传进去一个要执行的方法.. 由代理执行.. 所以用到了InvocationHandler 接口..
InvocationHandler 里必须要有一个代理执行目标的方法, method.invoke(sub, args); 这个sub是从目标类的接口中获取.. 也就是说 代理延续了之前类执行的方法.. 交由代理去实现
这题由于老师跟API里说的有出入. 我跟同学讨论了一下.. 暂时不能给出正确的答案..
API里说的参数是代理类的类加载器, 老师视频里说的是目标类的类加载器
但是具体的思路还是一样的.. 就是不知道 到底是代理还是目标, 这个无法确定
|