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文件就可以了