自动拆箱空对象到基元的陷阱
public class Foobar {
public static void main(String[] args) {
// example:
Boolean ignore = null;
if (ignore == false) {
System.out.println("Do not ignore!");
}
}
}
这里的缺陷是将 null 与 false 进行比较。由于我们将原始 boolean 与 Boolean 进行比较,因此 Java 试图将 Boolean Object 拆分为原始等价物,准备进行比较。但是,由于该值为 null,因此会抛出 NullPointerException。
Java 无法将原始类型与 null 值进行比较,这会在运行时产生 NullPointerException。考虑条件 false == null 的原始情况; 这会产生编译时错误 incomparable types: int and <null>。