[英]generic Enum.valueOf method : Enum class in parameter and return Enum item
我想制作一個在傳入參數的任何Enum類上實現valueOf
的方法(並且還要包裝一些專門的錯誤/缺失名稱代碼)。 所以基本上,我有幾個枚舉,例如:
enum Enum1{ A, B, C }
enum Enum2{ D, E, F }
我想要一個環繞valueOf
的方法。 我找不到直接在參數中傳遞Enum類的方法,可以在該參數上調用valueOf
。 這是我想出的:
private static Enum getEnum(Class<Enum> E, String name){
for(Enum e: E.getEnumConstants())
if(e.name().equals(name)){
return e;
}
return null;
}
我想用它調用: getEnum(Enum1,"A")
。 但它不喜歡它:
java: cannot find symbol
symbol: variable Enum1
location: class Main
當您可以為此使用Java自己的實現時,為什么要實現自己的呢?
YourEnum yourEnum = Enum.valueOf(YourEnum.class, value);
您的方法將變為:
private static <E extends Enum<E>> E getEnum(Class<E> enumClass, String name){
try {
return Enum.valueOf(enumClass, name);
} catch(IllegalArgumentException e) {
return null;
}
}
您可以通過以下方式調用它:
getEnum(Enum1.class, "A")
對於及格課程,您應該使用class
getEnum(Enum1.class,"A")
然后將方法簽名更新為
private static Enum getEnum(Class<? extends Enum> E, String name){
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.