我不確定這個問題是否屬於這裏。我已經編寫了以下方法來將對象轉換爲特定的類型。Java cast方法
private static <T> T cast(Object obj) {
return (T) (obj);
}
我想知道爲什麼我在番石榴或Apache Commons中找不到這種方法?我錯過了什麼嗎?
感謝,
Venk
我不確定這個問題是否屬於這裏。我已經編寫了以下方法來將對象轉換爲特定的類型。Java cast方法
private static <T> T cast(Object obj) {
return (T) (obj);
}
我想知道爲什麼我在番石榴或Apache Commons中找不到這種方法?我錯過了什麼嗎?
感謝,
Venk
因爲它不typesave。特別是番石榴的目的是最大限度地利用javas靜態打字。使用你的方法,可以將任何類的對象轉換爲任何其他類的對象。這不應該完成。
,如果你想嘗試以下
Integer a = (Integer) "1";
,編譯器會理所當然地抱怨。如果你使用你的轉換方法,你只需要擺脫編譯錯誤並將錯誤推遲到運行時。這從來不是一個好主意。此外,編譯器會警告您,對T的轉換未經檢查,可能會在稍後導致問題。
在大多數情況下,java類型推斷非常穩定,您應該聽取編譯器警告。
反觀另一方面幾乎完全拋棄了java類型系統。處理這是有點棘手,但有辦法檢查類型是否兼容(例如Class.isAssignableFrom(Class)
)。
爲什麼你想要這個方法呢? –
因爲這種方法是a)由於類型擦除而導致無操作,並且b)實際上並沒有比實際執行演員明顯縮短嗎? –
我同意第一部分。如果您使用Google地圖,它顯着更短。 –