noSuchMethodError神坑记

本文分享了在使用Spring Bean时遇到的因方法名称为`void set`且返回类型为`void`引发的`NoSuchMethodError`问题,解决方法是避免此类方法名并更改返回类型。注意在Spring注入场景下,重载方法需谨慎命名。
摘要由CSDN通过智能技术生成

今天优化底层代码,把工具类的boolean set (有重载)改为void set,然后就出现了方法调用报 NoSuchMethodError,各种百度各种修改,反编译确认,无效。最后,尝试把重载方法改为不同名的方法,ok。遂意识到是方法命名和返回类型的问题,貌似之前碰到过,但是太久忘记了。

确认bug:把重载方法名称都改为set,返回类型改为boolean,再试,ok。

最后总结一下:
出现这种情况的条件:
1、对象调用方式是spring bean注入.(怀疑spring对象代理注入有关,没有确认原因)。自己new对象或static调用是没问题的。
2、重载方法名称是set,且返回类型是void时

所以大家有需要使用spring bean时,bean里不要定义void set方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值