自动拆箱空对象到基元的陷阱

public class Foobar {
    public static void main(String[] args) {

        // example: 
        Boolean ignore = null;
        if (ignore == false) {
            System.out.println("Do not ignore!");
        }
    }
}

这里的缺陷是将 nullfalse 进行比较。由于我们将原始 booleanBoolean 进行比较,因此 Java 试图将 Boolean Object 拆分为原始等价物,准备进行比较。但是,由于该值为 null,因此会抛出 NullPointerException

Java 无法将原始类型与 null 值进行比较,这会在运行时产生 NullPointerException。考虑条件 false == null 的原始情况; 这会产生编译时错误 incomparable types: int and <null>