今天线上的系统出现了一个小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;