Java多个变量连续等号赋值的疑问
留意一下断点的位置,已经打到运算的下一行。
可以看到,最右边的newDTV是一个对象。
但是!!!最左边和中间的inputDTV和setterDTV都是null。
这是一个很玄学的问题,同一个查询,正常情况下,3个变量都能顺利赋值。
但是偶尔,就会出现上面的情况。
我一度认为是不是jvm突然gc清理了我的变量。
这个代码,是微软的msssql-jdbc8.jar11,在解析表字段类型。
为何呢?
回答:
从能看到的信息来说的话,最大可能只能是你源码和你运行的代码不匹配,也就是你在源码看到的inputDTV = setterDTV = newDTV
这一行最开始不是赋值而是和赋值无关的其他的语句,你源码更新了但是你的class
文件没有更新,所以造成实际运行过程中没有赋值的情况
如果从你的inputDTV
和setterDTV
的颜色和是否斜体来看,应该是本类的普通成员变量,所以也有可能你是多线程操作,在你debug
看到的这一刻之前,被其他线程修改了成员变量的值
如果是第一种情况,你只需要清理掉之前的class
文件,再重新跑一次就可以证实了
如果是第二种情况,你需要查看所有inputDTV
,setterDTV
赋值的地方,前面都加一个判断,如果被赋值的对象为空,则打印一段话,这样帮助你找到被赋值为空的场景
大概能想到的就这些,希望对你有所帮助
回答:
运算顺序?
以上是 Java多个变量连续等号赋值的疑问 的全部内容, 来源链接: utcz.com/p/175925.html