簡體   English   中英

使用已知的類型參數將Java對象轉換為通用類型

[英]Cast java Object to a generic type with a known type parameter

我有一個像這樣的通用類:

public class Box<T> {
   ...
}

稍后在代碼中,我想以這種方式將Object轉換為Box類:

Box<String> boxString = (Box<String>) object;

但是編譯器和IDE會在此處發出警告。
我可以通過不使用@SuppressWarnings完全避免警告嗎?

如果object的類型為Object ,則只能通過添加@SuppressWarnings("unchecked")來避免警告。

警告不是錯誤,如果您理解警告,則可以在代碼中包含一些警告。

編輯 :根據評論的建議,在注釋中添加了"unchecked"

警告是一件好事。 告訴您,在運行時不會對類型轉換的類型參數部分進行類型檢查。 如果可以肯定地確定它將始終是有效的轉換,則使用@SuppressWarnings("unchecked")是合理的。

但是,避免警告比抑制警告更好。

如果控制稍后需要轉換的Box實例的構造,則可以將Box子類化,因為它不是最終的。

 public class BoxString extends Box<String> { 
     ...
 }

現在,您無需使用泛型即可進行投射:

 if ( object instanceof BoxString ) {
    BoxString boxString = (BoxString) object;
    ...
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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