Je suis très familier avec le C#, mais de commencer à travailler de plus en Java. Je m'attendais à apprendre que les énumérations en Java ont été essentiellement équivalentes à celles en C#, mais apparemment ce n'est pas le cas. D'abord j'ai été heureux d'apprendre que Java enums peut contenir plusieurs éléments de données qui semble très avantageux (http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html). Cependant, depuis lors, j'ai trouvé beaucoup de fonctionnalités manquantes qui sont futiles dans C#, telles que la possibilité d'attribuer facilement une enum élément d'une certaine valeur, et, par conséquent, la capacité de convertir un nombre entier en un enum sans une quantité décente de l'effort (c'est à dire Convertir de valeur entière correspondant Java Enum).
Donc ma question est la suivante: est-il un avantage pour Java enums sur une classe avec un bouquet de public static final champs? Ou est-il juste de fournir plus compact de la syntaxe?
EDIT: Laissez-moi être plus clair. Quel est l'avantage de Java enums sur une classe avec un bouquet de public static final champs de même type? Par exemple, dans les planètes exemple sur le premier lien, quel est l'avantage d'un enum sur une classe avec ces constantes publiques:
public static final Planet MERCURY = new Planet(3.303e+23, 2.4397e6);
public static final Planet VENUS = new Planet(4.869e+24, 6.0518e6);
public static final Planet EARTH = new Planet(5.976e+24, 6.37814e6);
public static final Planet MARS = new Planet(6.421e+23, 3.3972e6);
public static final Planet JUPITER = new Planet(1.9e+27, 7.1492e7);
public static final Planet SATURN = new Planet(5.688e+26, 6.0268e7);
public static final Planet URANUS = new Planet(8.686e+25, 2.5559e7);
public static final Planet NEPTUNE = new Planet(1.024e+26, 2.4746e7);
Aussi loin que je peux dire, casablanca réponse est le seul qui répond à ce.