我应该从变量枚举中取出它的值并将其转换为string.how我可以吗?
这里是类型枚举:
public enum State{
b,c,p;
};
现在我必须在对象String中插入一个值。
答案 0 :(得分:2)
您可以使用enum.name
或enum.toString
来获取枚举常量的名称,或使用enum.ordinal
来获取序数位置。
答案 1 :(得分:2)
你可以使用name()或toString(),所以:
State aState = State.c;
String strState = aState.name();
有关更多信息,请参阅here官方Java参考资料......
答案 2 :(得分:2)
State.b.toString()
将返回"b"
。其他的也一样。
答案 3 :(得分:2)
通常,
State state = ...;
String string = state.toString();
应该可以使用,但不建议这样做,因为有人可能会出于某种其他目的覆盖toString
。
相反,您正在寻找的方法是
String string = state.name();
顺便说一下,你列举的陈述应该总是全部都是大写的,而且它们应该有描述性的名字。它不是一种语言规则,而是一种惯例。例如enum State { ON, OFF, PAUSED; }
。
答案 4 :(得分:1)
方法#1:使用内置的toString()
和name()
方法
如果您要打印的String
与State
的值相同,则可以使用toString()
方法或name()
方法。
System.out.println(State.b); // Prints "b"
System.out.println(State.c); // Prints "c"
System.out.println(State.p); // Prints "p"
方法#2:使用构造函数创建自定义映射
如果您希望将自定义String
与每个状态相关联,则可以使用构造函数将特定值与每个enum
值相关联:
public enum State{
b("State B"), c("State C"), p("State P");
private String longName;
private State(String longName) {
this.longName = longName;
}
@Override
public String toString() {
return this.longName;
}
};
当然,如果您不想中断默认的toString()
用法,您可以创建一个名为getFullName()
的其他方法,例如,返回自定义值。
答案 5 :(得分:1)
我倾向于做一些更复杂的事情,但我发现它更灵活:
public enum MyEnumeration {
SOME_NAME("Some Name"),
OTHER_THING("Other Thing"),
...
MORE_VALUES("More Values"),
private final String displayName;
private MyEnumeration(String displayName) {
this.displayName = displayName;
}
public String getDisplayName() {
return displayName;
}
}
这样,我在代码中对我的枚举使用标准大写,但可以为它们提供更明显的名称。 通过初始化数字,此技巧也可用于替换序数,然后您无需担心重新排列枚举。