Boolean.TRUE和true之间有什么区别

bee*_*tty 4 java wrapper

首先,我有

private Map<String, Boolean> mem = new HashMap<String, Boolean>();
Run Code Online (Sandbox Code Playgroud)

然后:

  if (wordDict.contains(s) ||  Boolean.TRUE==mem.get(s)) {
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

为什么我不能在if语句中使用"mem.get(s)== true".将出现错误"第6行:java.lang.NullPointerException"

我想我还是不能很好地理解包装类.请给我一些指导.谢谢!

Jen*_*ens 5

if mem.get(s)为null并将与原始布尔值进行比较,java将进行自动装箱.这意味着它会打电话null.booleanValue().

这就是你获得NPE的原因.