如何使用Proxy模式及Java内建的动态代理机制 - 编程入门网
blic class DynamicProxyHandler implements InvocationHandler {
private Object proxied;
public DynamicProxyHandler(Object proxied) {
this.proxied = proxied;
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("**** proxy: ****\n" + proxy.getClass()
+ "\nmethod: " + method + "\nargs: " + args);
if (args != null)
for (Object arg : args)
System.out.println(" " + arg);
return method.invoke(proxied, args);
}
}
这里的private Object proxied;即代理实例,也即上文代理模式中介绍的RealSubject对象。 在invoke()方法中,我们会打印它的所有参数,并调用当前代理的方法。 测试类DynamicProxyDemo.java
如何使用Proxy模式及Java内建的动态代理机制(4)时间:2011-03-23 zhangjunhd这里通过Proxy的静态方法newProxyInstance(ClassLoader loader, Class<?>[] interfaces,InvocationHandler h)生成代理类,并传递与其关联的调用处理程序new DynamicProxyHandler(real)。 对于newProxyInstance()的参数: [1]loader - 定义代理类的类加载器 ; [2]interfaces - 代理类要实现的接口列表 ; [3]h - 指派方法调用的调用处理程序 。 测试结果:
从结果可以发现,通过代理可以得到当前被调用的方法,及其参数。代理过程可以基于此进行逻辑处理,测试程序只是简单的打印这些相关信息。 本文出自 “子 孑” 博客,请务必保留此出处http://zhangjunhd.blog.51cto.com/113473/69996 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |