利用代理可以在运行时创建一个实现了一组给定接口的新类。
使用代理需要提供一个调用处理器(Invocation handler),调用处理器是实现了InvocationHandler接口的类对象,在这个接口中只有一个方法:
Object invoke(Object proxy,Method method, Object[] args)
无论何时调用代理对象的方法,调用处理器的invoke方法都会被调用,并向其传递Method对象和原始的调用参数。
要想创建一个代理对象,需要使用Proxy类的newProxyInstance方法,这个方法有三个参数:
- 一个类加载器(classloader)
- 一个Class对象数组,每个元素都是需要实现的接口
- 一个调用处理器
例:
接口:
实际实现接口的类:
调用处理器类:
测试类(生成代理类):
运行结果:
参考:
《JAVA核心技术卷Ⅰ:基础知识》
http://langyu.iteye.com/blog/410071