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(代理目標的實現類)