黑马程序员技术交流社区
标题:
关于动态代理技术的问题
[打印本页]
作者:
水蓝
时间:
2014-3-15 00:19
标题:
关于动态代理技术的问题
本帖最后由 水蓝 于 2014-3-25 22:55 编辑
在JAVA基础加强的第49~51视频中,讲解了动态代理技术的用法。
但有一件个问题,想请大家帮忙想下。
动态代理,有时候,是用在代码的运行验证过程中的。
比如:
在方法调用前打印时间、在方法调用后打印时间。或者计算打印时间差。
那如果我的程序验证OK,需要交付,不需要再有打印时间这种操作了。
我是需要重新修改代码结构调整相关代码?还是有什么其它的方法?
作者:
水蓝
时间:
2014-3-18 12:28
没人回额?补充一下问题吧,贴段代码上来。
public class ProxyTest {
public static void main(String[] args) {
List<String> array = new ArrayList<String>();
//如果哪天我的程序要交付了,不想用这个代理算时间了,那该怎么办呢?
List<String> strs = (List<String>)getProxy(array);
strs.add("1");
strs.get(0);
strs.remove(0);
}
/**
* 这个代理其实就是想打印方法的运行时间的
* @param target
* @return
*/
private static Object getProxy(final Object target) {
Object obj = Proxy.newProxyInstance(target.getClass().getClassLoader(),
new Class[]{List.class},
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("before:" + System.currentTimeMillis());
Object obj = method.invoke(target, args);
System.out.println("after" + System.currentTimeMillis());
return obj;
}
});
return obj;
}
}
复制代码
作者:
630681386@qq.co
时间:
2014-3-18 15:31
可以更改配置文件
作者:
水蓝
时间:
2014-3-18 15:39
630681386@qq.co 发表于 2014-3-18 15:31
可以更改配置文件
你是说,通过反射来加载类?:)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2