2011-09-14 15 views
17

En una clase, necesito definir diferentes acciones que se pasan a un método. Ahora, todas las instancias pueden compartir estas acciones de forma segura, así que pensé que podía hacer que la enumeración estuviera estática.¿Esta enumeración privada estática o no?

Pero en casi todos los ejemplos que he visto, la enumeración anidada nunca se convierte en estática. Entonces, ¿cuál es la forma preferida de definir una enumeración (privada) anidada? ¿Tiene sentido realmente no hacerlo estático?

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 
} 

Respuesta

35

El Java Language Specification, section 8.9, afirma:

tipos de enumeración anidados son implícitamente estáticos. Se permite declarar explícitamente que un tipo de enumeración anidado sea estático.

Así que puedes, pero no tienes que hacerlo, y no hará la diferencia. Personalmente, no creo que me moleste, ya que está implícito de todos modos.

4

tipos de enumeración anidados son implícitamente estáticos :)

4

Si una enumeración es un miembro de una clase, es implícitamente estática

Cuestiones relacionadas