说我有一个枚举,即:
public enum FooBar {
One, Two, Three
}
我想得到一个字符串的相应枚举值,让我们说'两个',然后得到FooBar.Two。
我怎样才能用Java做到这一点? Enum.ValueOf()
似乎没有关联。
答案 0 :(得分:6)
我有字符串'Two',我想要值。
要执行此操作,请使用valueOf
例如
MyEnum me = MyEnum.valueOf("Two");
或
MyEnum me = Enum.valueOf(MyEnum.class, "Two");
Enum.ValueOf()似乎没有关联。
看来它正是你想要的。
您可以使用
String s = myEnum.toString();
或
String s = myEnum.name();
您可以使用toString()
将任何对象转换为String。 (String是否理解不取决于实现;)
答案 1 :(得分:1)
使用不同的Enum构造。像这样的东西(我在我的代码中使用它):
enum ReportTypeEnum {
DETAILS(1,"Details"),
SUMMARY(2,"Summary");
private final Integer value;
private final String label;
private ReportTypeEnum(int value, String label) {
this.value = value;
this.label = label;
}
public static ReportTypeEnum fromValue(Integer value) {
for (ReportTypeEnum e : ReportTypeEnum.values()) {
if (e.getValue().equals(value)) {
return e;
}
}
throw new IllegalArgumentException("Invalid Enum value = "+value);
}
public String getDisplayName() {
return label;
}
public Integer getValue() {
return value;
}
}
getDisplayName()
将返回ENUM的字符串表示形式。
答案 2 :(得分:1)
Enum.valueOf(FooBar.class, nameOfEnum);
其中nameOfEnum
是字符串“One”,“Two”等
答案 3 :(得分:0)
尝试以下代码:
enum FooBar
{
One,Two,Three;
}
public class EnumByName
{
public static void main(String stp[])
{
String names[] = {"One","Two","Three"};
for (String name : names)
{
FooBar fb = Enum.valueOf(FooBar.class,name);
System.out.println(fb);
}
}
}