今天很好奇,對null進行強轉會不會拋錯。做了如下測試得到的結果是,如果把null強轉給對象,是不會拋異常的,本身對象是可以為null的。但是如果是基本類型,比如 int i = (Integer)obj的強轉,其實內部會調用intvalue方法去賦值給基本類型,所以這時候是會報錯的。
代碼如下
Object obj = null;
Integer s1 = (Integer)obj;
上面能正常執行,即把null賦值給一個對象或者強行類型轉換賦值給對象都是沒有問題的。如果s1是 int的基本類型呢?
代碼如下,編譯時不會報錯
int s1 = (Integer)obj;
System.out.println(s1);
執行,則報java.lang.NullPointerException錯誤。
我們反編譯后會發現調用了 intValue方法去獲取value,所以拋出空指針錯誤:
Object obj = null;
int s1 = ((Integer)obj).intValue();
System.out.println(s1);
---------------------
原文:https://blog.csdn.net/hebixi/article/details/52176014