2010-07-22 18 views
18

¿Java tiene la posibilidad de enumeraciones anónimas?Java: enumeraciones anónimas?

Por ejemplo, quiero que mi clase tenga una variable, cuyo valor puede ser uno de 5 ajustes diferentes. Entonces, obviamente, esa variable debería ser una enumeración. Pero este es el ÚNICO lugar donde se usará esa enumeración particular. Normalmente declararía un tipo de enumeración justo encima de la variable y luego declararía que la variable es de ese tipo, pero me preguntaba si habría una manera más clara. ¿Java soporta enums anónimos?

Ejemplo:

public class Test { 
    public enum Option { 
     FirstOption, 
     SecondOption, 
     ThirdOption 
    } 
    Option option; 
} 

¿Hay una manera de evitar declarar public enum Option y en lugar de simplemente permitir la variable opción de configurar como FirstOption, SecondOption o ThirdOption sin noción del tipo "Opción"?

Respuesta

19

No Java no es compatible con anónimo enum s.

Sólo declarar dentro de la clase sin visibilidad externa:

public class Test { 
    private static enum Option { 
    FirstOption, 
    SecondOption, 
    ThirdOption 
    } 

    Option option; 
} 
+0

¿Cómo se asigna un valor a 'option' de una clase fuera si el tipo de enumeración es privado? ¿Qué beneficio tiene establecer su tipo de privacidad? – Ricket

+0

@Ricket en el ejemplo anterior, 'Option 'solo se puede acceder dentro de la clase' Test', que es lo que describió que quiere –

+0

¿Cómo pensaba asignarlo cuando era anónimo? Configurar Enum en privado le permite ocultarlo de los usuarios de su API. Puedes asignar el valor desde el exterior tomando un 'String' y usando' Option.valueOf (String) ', o cualquier indicación de entrada que desees realmente. En general, no tiene sentido anonimizar u ocultar los Enums como lo está pidiendo. –

Cuestiones relacionadas