Java 是否基于加法值获取枚举?

Java 是否基于加法值获取枚举?,java,enums,Java,Enums,我有一个这样定义的枚举: private static enum COLOR { BLACK(Color.BLACK,"Black"), GREEN(Color.GREEN,"Green"); private Color color; private String name; COLOR(String n, Color c) { this.name = n; this.color = c; } 我试图找到一种基

我有一个这样定义的枚举:

private static enum COLOR {
    BLACK(Color.BLACK,"Black"),
    GREEN(Color.GREEN,"Green");

    private Color color;
    private String name;

    COLOR(String n, Color c) {
        this.name = n;
        this.color = c;
    }
我试图找到一种基于字符串(这是第二个附加参数)获取枚举常量的方法

COLOR.getEnumFromString("Green")
维护一个
映射
,并在
getEnumFromString
中检查映射。我建议如下:

 public enum COLOR{
       ....

       private static class MapWrapper{
           private static final Map<String, COLOR> myMap = new HashMap<String, COLOR>();
       }

      private COLOR(String value){
          MapWrapper.myMap.put(value, this);
      }
 }
公共枚举颜色{
....
私有静态类映射包装器{
私有静态最终映射myMap=newhashmap();
}
专用颜色(字符串值){
MapWrapper.myMap.put(值,this);
}
}
维护一个
映射
并在
getEnumFromString
中检查映射。我建议如下:

 public enum COLOR{
       ....

       private static class MapWrapper{
           private static final Map<String, COLOR> myMap = new HashMap<String, COLOR>();
       }

      private COLOR(String value){
          MapWrapper.myMap.put(value, this);
      }
 }
公共枚举颜色{
....
私有静态类映射包装器{
私有静态最终映射myMap=newhashmap();
}
专用颜色(字符串值){
MapWrapper.myMap.put(值,this);
}
}

您需要一个类似于以下内容的枚举声明方法:

private static enum COLOR {

    BLACK(Color.BLACK, "Black"),
    GREEN(Color.GREEN, "Green");

    private Color color;
    private String name;

    COLOR(Color c, String n) {
        this.name = n;
        this.color = c;
    }

    public static COLOR convertToEnum(String value) {
         for (COLOR v : values()) {
             if (value.equalsIgnoreCase(v.name)) {
                 return v;
             }
         }
         return null;
    }
}

您需要一个类似于以下内容的枚举声明方法:

private static enum COLOR {

    BLACK(Color.BLACK, "Black"),
    GREEN(Color.GREEN, "Green");

    private Color color;
    private String name;

    COLOR(Color c, String n) {
        this.name = n;
        this.color = c;
    }

    public static COLOR convertToEnum(String value) {
         for (COLOR v : values()) {
             if (value.equalsIgnoreCase(v.name)) {
                 return v;
             }
         }
         return null;
    }
}