【发布时间】:2015-08-21 05:42:23
【问题描述】:
我刚刚意识到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 枚举常量,这不是违反直觉甚至不合逻辑吗?
这种语言设计背后可能的考虑是什么?
【问题讨论】:
-
只需打开警告:“静态字段 State.disable 应以静态方式访问。”