簡體   English   中英

Java強制轉換方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM