debug模式下报错:Method threw 'java.lang.StackOverflowError' exception. Cannot evaluate xxx.toString()

今天调试代码的时候,发现调试器里一个变量后面报了这样的错误:Method threw 'java.lang.StackOverflowError' exception. Cannot evaluate xxx.toString()。但程序可以正常运行。
debug模式下调试器会调用这个对象的toString()方法,我是通过lombok的@Data注解来生成toString()方法的。而报错的原因就是我在定义类的时候用了双向的引用,举个例子就是:对象A引用了对象B,对象B又反过来引用了对象A,导致出现了一个环形的引用链,使用toString()方法时,会不断的互相循环调用引用对象的方法,导致栈溢出。
解决方法就是在类里面重写toString()方法,覆盖@Data注解实现的toString(),注意不要再互相循环调用方法。如果在代码里不需要用到toString()方法,可以删去@Data注解,用@Getter和@Setter来代替。事实上我的代码里就没有用到toString(),所以程序可以正常运行,只是在debug模式下,调试器报了错误。

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值