2012-04-26 48 views
0

例如取消裝箱整數結果轉換爲整數,然後調用intValue()。爲什麼不簡單地將其轉換爲Number,接着是必要的intValue()以獲取原語?當然,這個問題擴展到拆箱所有其他包裝。爲什麼拆箱轉換爲具體的類而不是數字

+1

你有超過100個問題,沒有一個公認的答案。我希望這不是即時消息;) – 2012-04-26 07:24:15

+0

pl這是因爲他們沒有得到回答,你可以看到對於yourseltef。 – 2012-04-27 14:34:21

+0

也許從提出這麼多沒有可以接受的答案的問題中可以學到一些東西。 ;) – 2012-04-27 15:31:01

回答

0

如果Java做了你的建議,那將會打破非常重要的功能,即裝箱/拆箱不會導致精度損失。在Java中已經有了一個確定的原則,即任何精確丟失的轉換都必須通過一個演員操作符明確要求。它是非法的寫

final int i = 1L; 

所以這將是錯的,如果這個工作:

final int i = Long.valueOf(1); 
+0

marko好點。 – 2012-04-27 14:33:23

+0

不是一個完整的答案。但有趣! – 2012-06-09 12:55:08

0

首先,我注意到整數是最終的。在對Integer類型的表達式(引用)調用intValue時,不需要檢查實例類型是否覆蓋intValue。這對於表達類型(引用)Number是必要的。

相關問題