三目運算符引起的NPE問題

在阿里泰山版的java開發手冊中提到關於三目運算符需要注意的問題
在這裏插入圖片描述

        Double a = null;
        
        // 這句會拋出NPE異常
        Double b = 1 == 2 ? 0d : a;
        
        System.out.println(b);

解決方式:

        Double a = null;

        // 都爲引用類型,不會拋出異常了
        Double b = 1 == 2 ? Double.valueOf(0d) : a;
        System.out.println(b);

問題原因是,當有基本類型和引用類型時,引用類型會拆箱成基本類型,那麼就會出現下面這種的情況:

     //  在拆箱中會出現這麼句代碼,導致報錯 
     null.doubleValue();

所以,三目運算符的第二,第三操作符都採用引用類型可以避免NPE的情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章