[英]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.forName
的String
的名稱,或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.