繼上一篇博客設(shè)計模式之代理模式學(xué)習(xí)之后http://blog.csdn.net/u014427391/article/details/75115928,本博客介紹JDK動態(tài)代理的實現(xiàn)原理,學(xué)習(xí)一下JDK動態(tài)代理的源碼。
Proxy類。該類即為動態(tài)代理類,可以使用反編譯工具查看jdk里源碼。JDK動態(tài)代理實現(xiàn)主要由Proxy類的newProxyInstance()方法實現(xiàn)。實現(xiàn)起來很容易,但是學(xué)習(xí)都要學(xué)習(xí)原理,所以本博客主要介紹jdk動態(tài)代理實現(xiàn)的源碼。

newProxyInstance()方法用于根據(jù)傳入的接口類型interfaces返回一個動態(tài)創(chuàng)建的代理類的實例,方法中第一個參數(shù)loader表示代理類的類加載器,第二個參數(shù)interfaces表示被代理類實現(xiàn)的接口列表,第三個參數(shù)h表示所指派的調(diào)用處理程序類。

首先寫個例子實現(xiàn)jdk動態(tài)代理
主題接口類:

public interface IHello {    public void sayHello();
}

被代理的類:

public class Hello implements IHello{    public void sayHello() {
        System.out.println("hello!");
    }
}

JDK動態(tài)代理InvocationHandler類

import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class MyInvocat