黑马程序员技术交流社区
标题:
程序中代码的疑问
[打印本页]
作者:
ㄗ灬Night|K
时间:
2013-10-12 23:26
标题:
程序中代码的疑问
本帖最后由 ㄗ灬Night|K 于 2013-10-14 08:48 编辑
在“52_黑马程序员_张孝祥_Java基础加强_完成InvocationHandler对象的内部功能”视频中
代码第27行看不懂了,跟下面的代码联系不起来..........{:soso_e101:}
谁能帮忙解释下这行代码的意义和作用啊?
package cn.itcast.day2;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.*;
public class ProxyTest {
/**
* @param args
*/
public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub
Collection proxy2 = (Collection)Proxy.newProxyInstance(
Collection.class.getClassLoader(), new Class[]{Collection.class},
new InvocationHandler(){
ArrayList target = new ArrayList();
public Object invoke(Object proxy, Method method,
Object[] args) throws Throwable {
long beginTime = System.currentTimeMillis();
Object Value = method.invoke(target, args);
long endTime = System.currentTimeMillis();
System.out.println(method.getName()+"::run time"+(endTime-beginTime));
return Value;
}});
proxy2.add("xxx");
proxy2.add("yyy");
proxy2.add("zzz");
System.out.println(proxy2.size());
}
}
复制代码
作者:
Jam-l
时间:
2013-10-12 23:43
Object Value = method.invoke(target, args);
就是利用反射机制进行方法调用,target是方法调用的目标对象,args是调用时候的参数,Value 当然是调用方法的返回值。其实就可以看做是这样的
proxy2.add("xxx"); proxy2就是target对象,就是ArrayList集合调用了add方法,加入了xxx元素
long endTime = System.currentTimeMillis();
而这些代码其实就是动态代理类对消息进行后续的处理,加一些功能,就是运行这个方法所需要多少时间
作者:
To
时间:
2013-10-13 13:53
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2