被getBoolean骗了

        今天被Boolean.getBoolean给骗了。

        事件还原:某个接口返回的数据中存在一个字段是true/false的String,在使用过程中直接用Boolean.getBoolean(String str)来获取该字段转成布尔值。上线后老发现不准确。

        经过仔细排查,发现这个getBoolean返回true的条件是:当且仅当以参数命名的系统属性存在,且等于 "true" 字符串时,才返回 true;也就是说,这个地方上线后这里获取值一直就都是false。正确方法使用Boolean.parseBoolean来取值。

        经过这次事件:看看其他包装类是否有类似方法和问题:

        System.out.println(Integer.getInteger("222"));
        System.out.println(Long.getLong("333"));


        果然:以上2个的结果均为null,大家在使用的过程中注意,别被方法名给骗了。



         

你可能感兴趣的:(被getBoolean骗了)