自動拆箱空物件到基元的陷阱

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>