首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

查看动态署理生成的$Proxy0.类的代码

2012-10-24 
查看动态代理生成的$Proxy0...类的代码??? 在java动态代理时,会动态生成代理类,命名为$Proxy+数字,很想

查看动态代理生成的$Proxy0...类的代码

??? 在java动态代理时,会动态生成代理类,命名为"$Proxy+数字",很想知道这个动态代理类的细节。于是想反编译这个类,笨拙一点只为记录。

??? Proxy类getProxyClass方法中,会先查找缓存,如果未找到则会新生成Class。于是在类生成位置 proxyClass = defineClass0(loader, proxyName, proxyClassFile, 0, proxyClassFile.length);这段代码前,将ProxyGenerator生成的byte[]输出到文件中。开始动手改造。。

??? 首先,新建项目将jdk的src导入工程中,在原版Proxy类中加入之前所说的代码,目的是为了输出至文件以展示细节。之后编译Proxy.java文件,eclipse中如果没有设置自动构建可以手动clean一下。这里用到Jad.exe,可以看到刚才编译的Proxy.class文件已经改变了内容。接下来替换\jdk\jre\lib\rt.jar中的class。用Winrar浏览rt.jar,找到proxy.class用刚才编译好的新class替换。最后找到生成的文件outPut.java(名字随便.java就行,用于jad反编译),文件内容为byte流,用指令jad outPut.java可以生成$Proxy0.jad,打完收工。。

? 注意实验前备份好原始文件。。

热点排行