什么是最好的方法来使用存储在Enum字符串字面量的值? 例如:

public enum Modes {
    some-really-long-string,
    mode1,
    mode2,
    mode3
}

然后我就可以用《风尚》了。将其字符串表示形式返回为Mode1。而不必一直调用Mode.mode1.toString()。


当前回答

每个枚举都有一个name()和valueOf(String)方法。前者返回enum的字符串名称,后者给出名称为该字符串的enum值。这就是你要找的吗?

String name = Modes.mode1.name();
Modes mode = Modes.valueOf(name);

Enum本身也有一个静态valueOf(Class, String),所以你也可以使用:

Modes mode = Enum.valueOf(Modes.class, name);

其他回答

你可以简单地使用:

""+ Modes.mode1

据我所知,唯一的办法就是

Mode.mode1.name();

然而,如果你真的需要这样做,你可以这样做:

public enum Modes {
    mode1 ("Mode1"),
    mode2 ("Mode2"),
    mode3 ("Mode3");

    private String name;       

    private Modes(String s) {
        name = s;
    }
}

mode1.name()或String.valueOf(mode1)。恐怕没有比这更好的了

使用mode1.name()或String.valueOf(mode .mode1)

你可以使用Mode.mode1.name(),但是你通常不需要这样做。

Mode mode =
System.out.println("The mode is "+mode);