今天优化底层代码,把工具类的boolean set (有重载)改为void set,然后就出现了方法调用报 NoSuchMethodError,各种百度各种修改,反编译确认,无效。最后,尝试把重载方法改为不同名的方法,ok。遂意识到是方法命名和返回类型的问题,貌似之前碰到过,但是太久忘记了。
确认bug:把重载方法名称都改为set,返回类型改为boolean,再试,ok。
最后总结一下:
出现这种情况的条件:
1、对象调用方式是spring bean注入.(怀疑spring对象代理注入有关,没有确认原因)。自己new对象或static调用是没问题的。
2、重载方法名称是set,且返回类型是void时
所以大家有需要使用spring bean时,bean里不要定义void set方法。