1. 程式人生 > >java中的動態代理Proxy

java中的動態代理Proxy

  動態代理是java語言的一個神奇的地方,不是很好理解,下面來看看關鍵的地方。

  InvocationHandler 是一個介面,官方文件解釋說,每個代理的例項都有一個與之關聯的 InvocationHandler 實現類,如果代理的方法被呼叫,那麼代理便會通知和轉發給內部的 InvocationHandler 實現類,由它決定處理。

public interface InvocationHandler {
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable;
}

 

InvocationHandler 內部只是一個 invoke() 方法,正是這個方法決定了怎麼樣處理代理傳遞過來的方法呼叫。

proxy 代理物件

method 代理物件呼叫的方法
args 呼叫的方法中的引數

method.invoke(ldh, args); //這個方法是核心,很重要,呼叫了被代理物件的方

可以說,這兩個invoke方法就是動態代理的核心,動態代理還多了一個物件proxy。

附上兩篇文章:https://blog.csdn.net/pangqiandou/article/details/52964066,https://blog.csdn.net/briblue/article/details/73928350