JAVA动态代理学习心得
1. 所有的额外新添加的方法要放到InvocationHandler的实现类中
2. Proxy类都与InvocationHandler相联系的,也就是说Proxy类的中的方法调用都会被重新分配到实例的InvoctionHandler中的invoke方法中,传递了reflect中的method类
3. 创建Java动态代理类的步骤:
a) 实现InvocationHandler接口
b) 通过Proxy.newProxyInstance得到一个Proxy类的实例
一般的写法如下:
public class XXXHandler implements InvocationHandler {
private Object originalObject;
public Object bind(Object obj) {
this.originalObject = obj;
return Proxy.newProxyInstance(
obj.getClass().getClassLoader(),
obj.getClass().getInterfaces(),
this)
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
method.invoke(originalObject, args);
}
4. 这样调用XXXHandler:代理目标的接口类= XXXHandler的实例.bind(代理目标的实现类)