我刚意识到Java中的枚举常量似乎包含了同一类型的所有枚举常量。
例如,以下代码是合法的:
enum State {
enable, disable, deleted;
}
class Test {
public static void main(String[] args) {
for ( State s : State.enable.disable.values() ) {
System.out.println(s);
}
}
}
当我看到输出结果是以下内容时,我感到非常惊讶:
enable
disable
deleted
enable
常量包含 disable
常量,而 disable
常量又包含所有的 State
枚举常量,这难道不是违反直觉甚至有些荒谬吗?
这种语言设计背后可能有哪些考虑?