将这个私有枚举设置为静态的还是非静态的?

19
在一个类中,我需要定义不同的行为,并将它们传递到一个方法中。现在,所有实例都可以安全地共享这些行为,因此我认为我可以安全地将枚举定义为静态的。 但是在我所看到的几乎所有示例中,嵌套枚举都没有被定义为静态的。那么,定义嵌套(私有)枚举的首选方式是什么?不将其定义为静态是否真的有意义呢?
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个回答

40

Java语言规范第8.9节中指出:

嵌套枚举类型隐式地为static。可以显式声明嵌套的枚举类型为static。

因此,您可以这样做,但不是必须的,并且不会有任何区别。个人认为没有必要显式声明,因为它已经是隐式的了。


4
嵌套枚举类型默认是静态的 :)

4
如果枚举是类的成员,它就隐式地被声明为静态。

2

由于枚举本身是静态的,因此在枚举中使用static关键字没有必要也不会产生任何影响。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接