[英]Java cast method
我不確定這個問題是否屬於這里。 我編寫了以下方法將對象強制轉換為特定類型。
private static <T> T cast(Object obj) {
return (T) (obj);
}
我想知道為什么我在Guava或Apache Commons中找不到這樣的方法? 我錯過了什么嗎?
謝謝,
Venk
你可以用方法使用標准施法
SomeClass o = SomeClass.class.cast(obj);
沒理由使用你的方法
SomeClass o = Utils.<SomeClass>cast(obj);
因為它不是typesave。 特別是Guava旨在最大限度地利用javas靜態類型。 使用您的方法,可以將任何類的對象強制轉換為任何其他類的對象。 這不應該做。
如果你想嘗試以下
Integer a = (Integer) "1";
編譯器會理所當然地抱怨。 如果你使用你的強制轉換方法,你只需要擺脫編譯錯誤並將錯誤推遲到運行時。 這絕不是一個好主意。 此外,編譯器會警告您未選中對T的強制轉換,以后可能會導致問題。
在大多數情況下,java類型推斷非常可靠,您應該聽編譯器警告。
另一方面,反射幾乎完全拋棄了java類型系統。 處理這個有點棘手,但有辦法檢查類型是否兼容(例如Class.isAssignableFrom(Class)
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.