誰能告訴爲什麼自動裝箱是不工作的,爲什麼有構造正常工作:與Java自動裝箱得到錯誤
int intValue = 12;
Double FirstDoubleValue = new Double(intValue);
Double SecondDoubleValue = intValue; // ==> Error
感謝提前:)
誰能告訴爲什麼自動裝箱是不工作的,爲什麼有構造正常工作:與Java自動裝箱得到錯誤
int intValue = 12;
Double FirstDoubleValue = new Double(intValue);
Double SecondDoubleValue = intValue; // ==> Error
感謝提前:)
The constructor expects a double
,原始類型在這種情況下,通過widening primitive conversion,一個int
可以使用。
然而,在
Double SecondDoubleValue = intValue; // ==> Error
你想的int
分配給Double
。這些是不兼容的類型。
轉換原始類型的表達式來引用類型
的 相應表達式,所以一個int
將成爲一個Integer
,但Integer
仍不與Double
兼容。
因此,自動裝箱不隱式使用包裝類的構造函數? –
@NarutoBijuMode這還不至於我可以告訴規定。就我所見,它通常使用相應引用類型的'static valueOf'方法。請注意,它仍然沒有什麼區別,因爲它會使用'Integer.valueOf(..)',而不是'Double.valueOf(..)'。 –
嘗試
Double SecondDoubleValue = (double)intValue;
Java可以不投INT翻番。它可以將int轉換爲double,這就是你的第二行。
在這裏尋找一些有關轉換的深度答案。 http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html
我不會投票,但我剛剛刪除了我的答案,其中指出了相同的確切事情。他知道如何去做。他在問爲什麼這是必要的。 – aliteralmind
您不能將自動裝箱與其他隱式轉換組合在一起。 – SLaks