because it happened inside debugger evaluation

本文深入探讨了在使用IDEA调试代码时遇到的诡异现象:某些变量在未触及断点的情况下被赋值。通过细致的排查,发现IDEA在构造方法执行完毕后默认调用了toString()方法,进而解释了变量被意外初始化的原因。文章最后提供了关闭IDEA自动执行toString()方法的解决方案。
  1. 问题
    调试代码的时候,发现有些变量赋值的代码没有进断点,就莫名其妙就被赋值了。在这里插入图片描述此时schemaMappingsLocation和schemaMappings的值都为null,按下F8在这里插入图片描述schemaMappingsLocation被赋值是正常的,schemaMappings的值怎么也有了???
    同时idea左下角有一个如下图的提示
    在这里插入图片描述2. 排查
    上面是调试的PluggableSchemaResolver类的构造方法,当构造方法执行完成,IDEA会默认调用该类的toString()方法。的确发现schemaMappings在PluggableSchemaResolver类的toString()被使用!
	public String toString() {
		// getSchemaMappings()中初始化了schemaMappings
		return "EntityResolver using mappings " + getSchemaMappings();
	}

3.解决
在设置中关掉自动执行toString()方法即可。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值