获取枚举的值并将其转换为String

时间:2011-12-03 16:02:24

标签: java

我应该从变量枚举中取出它的值并将其转换为string.how我可以吗?

这里是类型枚举:

 public enum State{
      b,c,p;

 };

现在我必须在对象String中插入一个值。

6 个答案:

答案 0 :(得分:2)

您可以使用enum.nameenum.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()方法

如果您要打印的StringState的值相同,则可以使用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;
    }
}

这样,我在代码中对我的枚举使用标准大写,但可以为它们提供更明显的名称。 通过初始化数字,此技巧也可用于替换序数,然后您无需担心重新排列枚举。