2011-09-14 14 views
17

In una classe, ho bisogno di definire diverse azioni che vengono passate in un metodo. Ora, tutte le istanze possono tranquillamente condividere queste azioni, quindi ho pensato di poter rendere sicuro l'enum statico.Rendi questa statuetta privata o no?

Ma in quasi tutti gli esempi che ho visto, l'enumerazione annidata non viene mai resa statica. Quindi, qual è il modo preferito per definire un enumerato (privato) enum? Ha davvero senso non renderlo statico?

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 
} 

risposta

35

Il Java Language Specification, section 8.9, afferma:

tipi enum nidificate sono implicitamente statici. È consentito dichiarare esplicitamente un tipo enum nidificato come statico.

Quindi puoi, ma non devi, e non fa differenza. Personalmente non penso che mi preoccuperei, perché è implicito comunque.

4

tipi enum nidificate sono implicitamente statico :)

4

Se un enum è un membro di una classe, è implicitamente statica