2016-02-25 182 views
2

我有一个字符串的枚举,如在这个example如何迭代Java枚举?

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

喜欢的东西:

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

编辑:我不想遍历所有这些枚举元素。这些STRING_ONE,STRING_TWO等都是某种状态。我想实现像

private void getNextstate(){ 
    myCurrentstate++; 
} 

一个getNextState()方法现在,我有这个,这似乎高效

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

'X = Strings.values()[x.ordinal()+ 1]' – khelwood

回答

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

你了'text'属性和toString覆盖的包容无关与问题,只会让你的答案比需要的时间长得多。 – VGR

+0

再次阅读问题,并转到链接,CO是指请。 –

0

你可以使用

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