2011-09-14 28 views
17

在一个类中,我需要定义传递给方法的不同动作。现在,所有实例都可以安全地共享这些动作,所以我认为我可以安全地使枚举静态。使这个私人枚举静态或不?

但是在我见过的几乎所有例子中,嵌套的枚举永远不会变为静态的。那么,哪个是定义嵌套(私有)枚举的首选方式?它不是静态的吗?

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 
} 

回答

35

Java Language Specification, section 8.9,指出:

嵌套枚举类型隐含静态的。允许显式声明一个嵌套的枚举类型为静态的。

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

4

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

4

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