JDKDynamicProxy JDK動態代理

JDK提供了Proxy類,這個類屬於工具類,通過Proxy.newProxyInstance(要生成代理對象的類所在的classLoader, 要生成代理對象的類的接口, InvocationHandler的實例);


這個類生成出來的代理對象如下:

$Proxy0 extend Proxy implements IMyService{

private static Method m1;

private static Method m2;

public $Proxy0(InvocationHandler h) {

super(h);

}


public final void myMethod001(){

try {

h.invoke(this,m1,null);

}

catch (Error _ex){}

catch(Throwable throwable){

throw new UndeclaredThrowableException(throwable);

}

}

}

其他方法,比如:hashCode,ToString,equal就不寫出來了,其實還是裏面的實現機制就是委託


如何得到自己代理對象的class文件內容呢?


byte[] proxyClassFile = ProxyGenerator.generateProxyClass(proxyName, interfaces);


File f = new File("class/test.class");

FileOutputStream fos = new  FileOutputStream(f);

fos.write(proxyClassFile);

fos.flush();

fos.close();

通過反編譯工具查看test.class文件就可以了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章