簡體   English   中英

通用Enum.valueOf方法:參數中的Enum類,並返回Enum項目

[英]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);

http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html#valueOf(java.lang.Class,%20java.lang.String)

您的方法將變為:

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.

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