您好,欢迎来到暴趣科技网。
搜索
您的当前位置:首页震惊,IDEA会私自执行你的代码?--- IDEA在debug时调用toString()方法的问题及解决

震惊,IDEA会私自执行你的代码?--- IDEA在debug时调用toString()方法的问题及解决

来源:暴趣科技网

what?IDEA在debug时会自动私自调用我们的代码么?是的,会调用对象的toString()方法。
一般在debug时很难发现这种现象,并且多数情况下调用一下toString()方法没有什么问题(但是一些客户端服务端交互的项目,会有意想不到的问题出现。例如Dubbo的AbstractConfig类,对这个类的debug会导致其子类ReferenceConfig的initialized属性错误的被修改为true,进而无法正确的生成Dubbo代理。),就使我们更不容易察觉。但是今天在debug一个本地模拟基于Netty的RPC的项目时,发现consumer客户端并没有执行任何provider端提供的方法,provider服务端竟然收到了来自客户端的数据,几番排查,发现是idea在debug模式下的私自调用。
provider端:

当收到来自客户端建立的连接的数据时,会执行channelRead方法,这里我们打了日志。
consumer客户端:

客户端rpc调用服务端的DemoService方法,这里我们是debug模式,在方法调用之前打了断点,也就是此时还没有进行sayHello方法的调用,但是我们看下服务端的日志

可以惊奇的发现,在我们「真正」调用对象方法之前,idea已经私自调用了DemoService的toString()方法。

问题发现了,那么如何解决呢?
IDEA在debug时调用toString()方法的情况是可以在配置中关掉的,在idea设置中更改下默认设置就好

取消’toString()’设置的勾选就可以了

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoquwan.com 版权所有 湘ICP备2024080961号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务