当我通过一个简单的Enum测试器遍历for-each循环和switch语句来输出枚举值时,我看到的行为对我来说似乎很陌生。带枚举的开关情况导致重复
代码:
public class EnumTest {
private Number number;
public EnumTest(Number number) {
this.number = number;
}
public enum Number {
ONE,
TWO,
THREE,
FOUR,
FIVE;
}
private void tellItLikeItIs() {
switch (number) {
case ONE:
System.out.println("ONE");
case TWO:
System.out.println("TWO");
case THREE:
System.out.println("THREE");
case FOUR:
System.out.println("FOUR");
case FIVE:
System.out.println("FIVE");
}
}
public static void main(String[] args) {
for (Number n : Number.values()) {
EnumTest et = new EnumTest(n);
et.tellItLikeItIs();
System.out.println();
}
}
}
输出:
ONE
TWO
THREE
FOUR
FIVE
TWO
THREE
FOUR
FIVE
THREE
FOUR
FIVE
FOUR
FIVE
FIVE
为什么每次调用返回自身和所有后续值?
你忘了'break' – user1516873 2013-03-19 13:48:48
我很惊讶你的编译器并没有警告你这件事。你用什么来编译? – 2013-03-19 13:50:14
愚蠢的问题。我会在下面回答。有趣的是,我发布的那一分钟是我意识到答案的那一刻。 – 2013-03-19 13:50:41