如何迭代Java枚举?

时间:2016-02-25 15:00:38

标签: java enums

我有一个字符串枚举,如此example

当我的当前元素是STRING_ONE时,如何使用例如++运算符切换到枚举中的下一个字符串项?

类似的东西:

 Strings myEnum = String.STRING_ONE;
    myEnum++ ; // to have STRING_TWO for instance

编辑:我不想迭代所有这些枚举元素。这些STRING_ONE,STRING_TWO等是某种状态。我想实现一个getNextState()方法,如

private void getNextstate(){
   myCurrentstate++;
}

现在,我有这个,这看起来效率不高

private void getNextstate(){
   if(myCurrentstate == Strings.STRING_ONE) myCurrentstate == Strings.STRING_TWO;
   else if(myCurrentstate == Strings.STRING_TWO) myCurrentstate == Strings.STRING_THREE;
   //..
   else if(myCurrentstate == Strings.STRING_NINTYNINE) myCurrentstate == Strings.STRING_HUNDRET;
}

2 个答案:

答案 0 :(得分:2)

在java中,你不能重载+运算符,但你可以肯定:

   public enum Strings {
    STRING_ONE("ONE"),
    STRING_TWO("TWO")
    ;

    private final String text;

    /**
     * @param text
     */
    private Strings(final String text) {
        this.text = text;
    }

    /* (non-Javadoc)
     * @see java.lang.Enum#toString()
     */
    @Override
    public String toString() {
        return text;
    }
}

然后

for (Strings dir : Strings.values()) {
  // your code here
  System.out.println(dir.toString());
}

答案 1 :(得分:0)

您可以使用

for (Strings string : Strings.values()) {
    System.out.println(string);
}