請幫我把我的頭圍繞爲什麼這不起作用。 (這不是一個實際的問題,這是對OCPJP考試心理鍛鍊; Tibial。)Java:自動拆箱與鑄造相結合
public class ImplicitConversions {
Integer iBoxed;
short sPrimitive = (short)iBoxed;
}
//編譯器錯誤:不兼容的類型;需要:簡短,找到:整數
我假設編譯器試圖首先沒有(或之前)取消裝箱,而例如一個算術運算(iBoxed + iBoxed)會首先解除它。因此,可以肯定地說,自動裝箱/取消裝箱在操作順序(一元,算術,關係,邏輯,有條件,賦值)中的位置以及它到底在哪裏?
我一直在閱讀關於在源代碼下的鑄造轉換(以確保我與1.6兼容),但這一個逃避我。謝謝。 http://docs.oracle.com/javase/specs/jls/se5.0/html/conversions.html#20232
您正在使用搶先式數據類型,這是不允許的 – 2014-09-29 15:11:30
@MuhammadRamahy該如何工作? 'Integer'和'Short'之間沒有繼承關係。 'short sPrimitive =(Short)iBoxed;'甚至不會編譯,而'short sPrimitive =(Short)(Object)iBoxed;'編譯時,編譯器的類型檢查被繞過是沒有用的。運行時異常將被拋出。 – 5gon12eder 2014-09-30 00:22:27
你是對的。我不知道我爲什麼這麼說。 – 2014-10-01 11:19:37