簡體   English   中英

將通用類型參數類作為參數傳遞

[英]Pass generic type parameter class as argument

假設我有一個方法

public <T extends Enum<T>> Enum<T> getEnumValue(String string, ??)

在另一類中的另一種方法,

public T method(String string)
  ...
  getEnumValue(string, ??)

我將從方法2傳遞為方法1的參數,以便獲得枚舉值,即在我的幻想世界中,我可以這樣做:

方法2:

getEnumValue(string, T.class)

方法1:

getEnumValue(String string, Class<T> clazz)
  return Enum.valueOf(clazz, string)

由於類型擦除,因此無法執行此操作。 必須傳遞顯式的Class<T>或足夠的信息來恢復它(例如,您可以傳遞給Class.forNameString的名稱,或T的實例)。

EnumClass.getEnumConstants()

它在java.lang.Class而不在java.lang.Enum 使用您的EnumClass.VALUE.cardinal()索引此數組。

如果您堅持要調用String名稱,則可以

EnumClass.getEnumConstants()[0].valueOf(stringValue)

這是在實例上調用靜態方法,您可能會收到編譯器警告,但它可以工作。

暫無
暫無

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

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