JAVA三元運算符空指針引用的坑


有以下代碼:

Long x = null;
Long y = true ? x : 100L;
System.out.println(y);

很多人以為會輸出:null,其實會報空指針異常

原因是編譯后包裝類型會拆箱: Long y = true ? x : 100L;  反編譯后變為:Long y = true ? x.longValue() : 100.longValue();
x為空對象,調用.longValue()自然會引用空指針異常

 

正確的代碼:

Long x = null;
Long y = true ? x : Long.valueOf(100);
System.out.println(y);

將基本類型100L 改為 包裝類型Long.valueOf(100),這樣就不會發生拆箱,也就不會發生空指針引用。

希望大家使用三目運算符 且 兩邊類型不一致時,一定要引起注意!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM