查看Java动态代理生成的类

声明:非常感谢yy629 提供的帮助。原文:java的动态代理生成了什么?

 

要查看java动态代理生成的源文件,必须先导出字节码文件然后通过反编译(如jad工具)生成源文件。

 

如何导出动态代理生成的类的字节码文件(*.class)呢?

 

只需要在应用中添加下面一段代码:

 

Field field = System.class.getDeclaredField("props");  
field.setAccessible(true);  
Properties props = (Properties) field.get(null);  
props.put("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");  

 

当运行该段代码的程序,会在使用了动态代理的类包中生成对应的动态代理类的字节码。

 

结论:动态代理类会自动地添加上toString,hashCode,equals方法,而且这三个方法都会调用InvocationHandler中的invoke方法。这就是为什么在生成的代理类中调用toString,hashCode,equals都会执行invoke的原因。

你可能感兴趣的:(学习笔记)