今天线上的系统出现了一个小bug,问题出现的过程是这样的:从页面传过来的参数 isAm 可能会出现三个值,null、false、true,在程序处理时需要将 null、false 都转成null,true依然保持true :于是写了如下一段代码:
isAm= Boolean.FALSE.equals(isAm) ?null:true; 于是悲剧就发生了,由于 Boolean.FALSE.equals(null) = false , 同时 Boolean.TRUE.equals(null) = false, 这段代码将 false ----> null,但却把null ----> true,完全不是我原本的想法
改为如下代码,解了该bug
isAm= Boolean.TRUE.equals(isAm) ? true:null;
本文详细阐述了在Java中处理布尔值时遇到的一个常见问题,即如何正确地将null和false转换为null,避免误将null转换为true。通过提供解决方案并分析原因,旨在帮助开发者提高代码质量和减少逻辑错误。
853

被折叠的 条评论
为什么被折叠?



