1. 程式人生 > >爬坑:Java自動拆箱

爬坑:Java自動拆箱

先來程式碼。你是否寫過這樣的程式碼?

 public static void main(String[] args) {
        Integer test = null;

        int test2 = test;
    }

或者說

 public static void main(String[] args) {
        Integer test = null;
        test(test);
    }

    public static void test(int test){

    }

或者說test方法裡面傳入的是其他地方的,比如資料庫有一個Integer欄位,然後get傳進去。

這裡就會出現java.lang.NullPointerException,而這個錯誤如果你沒有很好的日誌處理,很難定位出來。
這個就是自動拆箱中出來的問題。
關於自動拆箱,裝箱,請看Java自動拆箱裝箱

在Integer轉化成 int時會呼叫Integer的intvalue方法
Integer物件都為Null,怎麼呼叫intValue方法,這個時候就報錯,所以我們在引數傳遞的時候一定要注意,自動拆箱的問題。