自动拆箱空对象到基元的陷阱
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>
。