黑马程序员技术交流社区
标题:
动态代理
[打印本页]
作者:
a6511631
时间:
2014-8-18 17:38
标题:
动态代理
话说有这么一个叫proxy3动态代理对象。执行了下面这句代码:
System.out.println(proxy3.getClass().getName()); //打印出来的是代理类的字节码名字
复制代码
为什么是打印的代理类的字节码名字而不是打印目标类的名字呢?
答案是:目标类关于自身的方法中,调用目标类从Object类继承的hashCode, equals, 或toString这几个方法时,代理对象将调用请求转发给InvocationHandler对象,对于其他方法,则不转发调用请求。
那么,关于答案的疑问在于,这里调用的不是getClass()方法吗?跟hashCode, equals, 或toString这几个方法有什么关系?
作者:
yuZhe_toString
时间:
2014-8-18 18:03
本帖最后由 yuZhe_toString 于 2014-8-18 18:20 编辑
平时没注意,今天一看还真是个问题。刚才看了一下Object类,getClass方法相对于你上面说的几个方法 唯一不同的是,getClass方法是final修饰的,也就是可能代理类,不能重写这个getClass方法对目标类进行代理。所以才会打印出自己的字节码文件。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2