Ela*_*da2 -5 java string enums
我有这个枚举类:
public enum IconImageTag {
None("val1"),
USD("val2"),
EURO("val3");
}
Run Code Online (Sandbox Code Playgroud)
给出一个代表一个字符串"value"(比如说"val"1)
如何将其转换为相应的枚举?
更新
我试过这个.为什么从ctor访问静态成员是非法的?我收到一个错误.
private final String value;
private static final Map<String, IconImageTag> stringToEnumMap = new HashMap<>();
IconImageTag(String value) {
this.value = value;
stringToEnumMap.put(value, this);
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,您需要构建Map<String, IconImageTag>并添加适当的方法.例如:
public enum IconImageTag {
NONE("val1"),
USD("val2"),
EURO("val3");
private final String value;
private final Map<String, IconImageTag> valueMap = new HashMap<>();
static {
for (IconImageTag tag : values()) {
valueMap.put(tag.value, tag);
}
}
private IconImageTag(String value) {
this.value = value;
}
public static IconImageTag fromValue(String value) {
return valueMap.get(value);
}
}
Run Code Online (Sandbox Code Playgroud)
(我可能在这里使用与"价值"不同的术语,以避免与其他人混淆valueOf()......)
注意静态初始化程序块的使用 - 枚举值本身之后初始化枚举中的任何静态变量,这意味着当枚举构造函数运行时,valueMap仍将为null.
| 归档时间: |
|
| 查看次数: |
170 次 |
| 最近记录: |