Tengo una enumeración SOME_ENUM
:
public enum SOME_ENUM {
EN_ONE,
EN_TWO,
EN_THREE;
}
Será SOME_ENUM.values()
siempre devuelven las enumeraciones en el orden de las declaraciones de enumeración:
EN_ONE, EN_TWO, EN_THREE
? ¿Es una regla o no se garantiza que no se cambie en las próximas versiones de JDK?
java
enums
specifications
Skarab
fuente
fuente
Respuestas:
La especificación del lenguaje Java utiliza este lenguaje explícito:
Entonces, sí, se devolverán en orden de declaración. Vale la pena señalar que el orden puede cambiar con el tiempo si alguien cambia la clase, así que tenga mucho cuidado con cómo lo usa.
fuente
Sí, está garantizado devolverlos en ese orden.
Sin embargo, debe evitar confiar en eso y en el
ordinal()
valor, ya que puede cambiar después de insertar nuevos elementos, por ejemplo.fuente
Está determinado por el orden en el que se declaran sus valores. Sin embargo, no hay garantía de que usted (u otra persona) no reordene / inserte / elimine valores en el futuro . Así que no debes confiar en el pedido.
Efectivo Java 2nd. Edition dedica su artículo 31 a un tema estrechamente relacionado: use campos de instancia en lugar de ordinales :
fuente
enum
para algún propósito para el que no fue diseñado.Las otras respuestas son buenas, pero no comentes sobre esto:
No creo que existan garantías sobre futuros JDK, por lo que ni siquiera debería preocuparse por ellas. No habría forma de hacerlos cumplir, los futuros clientes potenciales de JDK podrían simplemente decidir incumplir dichas garantías. Es como el sistema parlamentario de Westminster: "Ningún Parlamento puede obligar a un futuro parlamento".
Dicho esto, la historia del JDK revela una excelente consistencia. No realizan muchos cambios importantes, por lo que puede estar bastante seguro de que se conservará el comportamiento especificado (no solo observado) actual .
fuente