Java教程

JDK动态代理注意事项

本文主要是介绍JDK动态代理注意事项,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一个蠢问题,记一下,防止下次再犯。

今天把上周写的一个JDK动态代理的demo拿出来重写看了下,然后修改了重写的invoke方法的返回值,结果启动Main方法时就报错ClassCastException。

折腾来折腾去,愣是没找到原因,后面还是把生产的Proxy文件给复制了一份,然后修改Main方法直接调用复制的Proxy类的方法进行debug。

找到原因如下 :代理是将类的所有方法代理了,这个是重点。

所有方法的返回值都是implement InvocationHandler重写的invoke方法的返回值。

也就是说明,这个invoke方法的返回值不能随便写,按规则来就只能是return method.invoke。

 

当时也是自己傻逼,翻生成的代理类的代码时就认为是重写的问题,结果想着super.toString执行的时候想岔路了,觉得这块没问题,我……下午5点到10点半,5个半小时……

这篇关于JDK动态代理注意事项的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!