JAVA動態(tài)代理學(xué)習(xí)心得
1. 所有的額外新添加的方法要放到InvocationHandler的實現(xiàn)類中
2. Proxy類都與InvocationHandler相聯(lián)系的,也就是說Proxy類的中的方法調(diào)用都會被重新分配到實例的InvoctionHandler中的invoke方法中,傳遞了reflect中的method類
3. 創(chuàng)建Java動態(tài)代理類的步驟:
a) 實現(xiàn)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. 這樣調(diào)用XXXHandler:代理目標(biāo)的接口類= XXXHandler的實例.bind(代理目標(biāo)的實現(xiàn)類)