如何迭代Java枚举?
我有一个字符串枚举,如下所示 当我的当前元素是STRING_ONE时,如何使用例如++运算符切换到枚举中的下一个Strings项 比如:如何迭代Java枚举?,java,enums,Java,Enums,我有一个字符串枚举,如下所示 当我的当前元素是STRING_ONE时,如何使用例如++运算符切换到枚举中的下一个Strings项 比如: Strings myEnum = String.STRING_ONE; myEnum++ ; // to have STRING_TWO for instance ? 编辑:我不想遍历所有这些枚举元素。这些字符串1、字符串2等是某种状态。我想实现一个getNextState()方法,如 private void getNextstate(){
Strings myEnum = String.STRING_ONE;
myEnum++ ; // to have STRING_TWO for instance
?
编辑:我不想遍历所有这些枚举元素。这些字符串1、字符串2等是某种状态。我想实现一个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;
}
在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());
}
你可以用
for (Strings string : Strings.values()) {
System.out.println(string);
}
x=Strings.values()[x.ordinal()+1]
您包含的text
属性和toString覆盖与问题无关,只会使您的答案比需要的长得多。请再次阅读问题,并转到该协调员所指的链接。