2009-12-10 21 views
37

Duplicar posible:
add values to enumJava herencia enumeración

Por qué enumeraciones en Java no se puede heredar de otras enumeraciones? ¿Por qué se implementa esto de esta manera?

+0

http://stackoverflow.com/questions/55375/add-values-to-enum –

+3

Me gustaría volver a formular su pregunta. ¿Por qué las enumeraciones no pueden tener una base abstracta? La respuesta aceptada a la pregunta citada por Bill explica por qué no puede extender enumeraciones con otros valores, pero aún no está claro para mí por qué no pueden compartir una implementación base. –

Respuesta

78

Example stolen from here

Debido a la adición de elementos a una enumeración crearía efectivamente un super clase , no una clase sub.

considerar:

enum First {One, Two} 
enum Second extends First {Three, Four} 

First a = Second.Four; // clearly illegal 
Second a = First.One; // should work 

Este es el reverso de la forma en que trabaja con clases regulares. Supongo que podría implementarse de esa manera, pero sería más complicado de implementar de lo que parece, y sería sin duda confundir a las personas.

+2

Probablemente lo que queremos es primeros implementos MyInterface Segundo implementos MyInterface Luego utilizan MyInterface para la unión de los dos grupos – user1176505

+2

en primer lugar a = Second.One ser una declaración ilegal? –

+0

@TimothySwan El código al que se hace referencia no se compilará, ya que se lanzará una excepción en la línea 'enum Second extends First {Three, Four}'. –