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;
}
}