在Java中,如何在枚举本身中获取枚举的值?

Mat*_*hew 6 java enums tostring

我想覆盖toString()我的枚举,Color.但是,我无法弄清楚如何获取枚举Color内部实例的值Color.有没有办法在Java中这样做?

例:

public enum Color {
    RED,
    GREEN,
    BLUE,
    ...

    public String toString() {
        // return "R" for RED, "G", for GREEN, etc.
    }
}
Run Code Online (Sandbox Code Playgroud)

Erk*_*lat 18

public enum Color {
    RED("R"),
    GREEN("G"),
    BLUE("B");

    private final String str;
    private Color(String s){
        str = s;
    }
    @Override
    public String toString() {
        return str;
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以为Enums使用构造函数.我没有测试语法,但这是个主意.

  • 我建议添加一个`final`和几个`private`s.哦,还有一个分号. (3认同)

mae*_*ics 15

您也可以打开类型this,例如:

public enum Foo { 
  A, B, C, D 
  ; 
  @Override 
  public String toString() { 
    switch (this) { 
      case A: return "AYE"; 
      case B: return "BEE"; 
      case C: return "SEE"; 
      case D: return "DEE"; 
      default: throw new IllegalStateException(); 
    } 
  } 
} 
Run Code Online (Sandbox Code Playgroud)

  • 不,你可以对枚举进行切换,可能会因为有更好的方式而被投票,我会做像Chinmay的解决方案.遗憾的是,可以在没有评论的情况下进行投票. (3认同)