黑马程序员技术交流社区
标题:
分享一个动态代理的代码
[打印本页]
作者:
周博文
时间:
2015-8-16 14:00
标题:
分享一个动态代理的代码
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.List;
public class ProxyDemo {
public static void main(String[] args) {
//创建实际对象
final List list = new ArrayList();
//创建代理对象对list接口做代理
/*
* newProxyInstance参数的含义:
* ClassLoader : 通过要代理的类的Class对象获取类加载器,以便于代理类获取实际类的内部结构
* Interface[] : 获取代理类的所有接口
* InvocationHandler : 通过调用处理器接口调用接口的方法。
*/
List proxy = (List) Proxy.newProxyInstance(list.getClass()
.getClassLoader(), list.getClass().getInterfaces(),
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method,
Object[] args) throws Throwable {
Object obj = method.invoke(list, args);
return obj;
}
});
proxy.add("I love Java.");
proxy.add(34);
System.out.println(proxy);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2