2012-01-10 84 views

回答

9

它足夠便宜,它屬於過早優化的範疇。不要浪費時間思考或提出問題,除非您已經對應用程序進行了描述,並確定這是一個問題,最重要的是:不要爲了避免它而妥協於您的設計。

0

不,它不應該影響性能足夠重要。

2

類型轉換會產生成本,因爲必須檢查運行時類型信息以確保轉換將工作。與其他一切相比,我懷疑這將是重大的,但你可以嘗試和衡量它。

更一般地說,類型轉換是(恕我直言)表明某種東西在設計中不正確。當然,有時候你無法避免它(例如使用舊版集合),但我一定會看到我是否可以刪除它。

4

取決於你的意思是類型轉換。沒有任何費用的「上傳」會導致你很多費用。第二個答案也是以「取決於」開始。通常我會避免在代碼中進行向下轉換,因爲從我的經驗來看,如果它在代碼中被過度使用,則意味着設計很糟糕。而另一方面,這並不一定意味着根本不應該使用它。

+2

+1:儘管性能可能會有點貴,但一個好的設計是避免它的更重要原因。 ;) – 2012-01-10 12:54:18

4

JavaWorld: The cost of casting

鑄造用於 類型之間轉換 - 在 特別是引用類型之間,在其中我們感興趣 這裏鑄造 操作的類型。

上溯造型操作(也稱爲在Java 語言規範 擴大轉換)轉換 子類參考祖先 類引用。這種鑄造 操作通常是自動的,因爲 它總是安全的,並且可以由編譯器直接執行 。

低迷現狀操作(也稱爲在Java 語言規範 收縮轉換)轉換一個 祖先類參考子類 參考。此鑄造操作 會產生執行開銷,因爲Java 要求在 運行時檢查強制轉換以確保其有效。 如果引用的對象不是任一目標類型爲 鑄造或該類型的子類的實例 , 嘗試鑄造不允許 和必須拋出 java.lang.ClassCastException。