读书人

查看Java动态署理生成的类

发布时间: 2012-12-27 10:17:10 作者: rapoo

查看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的原因。

读书人网 >编程

热点推荐