是否将此私有枚举设为静态?

时间:2011-09-14 14:41:41

标签: java enums

在课堂上,我需要定义传递给方法的不同动作。现在,所有实例都可以安全地共享这些动作,所以我认为我可以安全地使枚举静止。

但是在我看过的几乎所有例子中,嵌套的枚举永远不会变成静态的。那么,哪个是定义嵌套(私有)枚举的首选方法?不让它静止是否真的有意义?

public class MyClass {
    private static enum Action {
        READ("read"),
        WRITE("write");

        final String value;

        Action(String value) {
            this.value = value;
        }

        String getValue() {
            return value;
        }
    }

    // attributes, methods, constructors and so on
}

4 个答案:

答案 0 :(得分:37)

Java Language Specification, section 8.9,声明:

  

嵌套枚举类型是隐式静态的。允许将嵌套的枚举类型显式声明为静态是允许的。

所以你可以,但你不必,而且没有任何区别。就个人而言,我认为我不会打扰,因为它无论如何都是隐含的。

答案 1 :(得分:4)

嵌套枚举类型是隐式静态的:)

答案 2 :(得分:4)

  

如果枚举是一个类的成员,则它是隐式静态的

答案 3 :(得分:1)

由于枚举本质上是静态的,因此在枚举中使用static-keyword时没有必要也没有区别。