Tengo una enumeración en Java:
public enum Months
{
JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
}
Quiero acceder a los valores de enumeración por índice, por ejemplo
Months(1) = JAN;
Months(2) = FEB;
...
¿Cómo voy a hacer eso?
Month
versiones posteriores vienen con una enumeración incorporada.Respuestas:
Prueba esto
fuente
public static final ArrayList<Months> ALL = new ArrayList<Month>() {{ for (Months m : Months.values()) add(m); }};
luego puede acceder a los elementos conMonths i = ALL.get(index)
Aquí tienes tres formas de hacerlo.
fuente
public static
mutable (tanto de matriz como nofinal
). Euw. YIllegalArgumentException
tendría mucho más sentido que devolver unanull
bomba.Intenté lo mismo y se me ocurrió la siguiente solución:
La clase tiene sus propios valores guardados dentro de una matriz, y yo uso la matriz para obtener la enumeración en la posición de índice. Como se mencionó anteriormente, las matrices comienzan a contar desde 0, si desea que su índice comience desde '1', simplemente cambie estos dos métodos a:
Dentro de mi Main obtengo el objeto de países necesario con
que establece currCountry en el último país, en este caso Countries.KENTUCKY.
Solo recuerde que este código se ve muy afectado por ArrayOutOfBoundsExceptions si está utilizando índices codificados para obtener sus objetos.
fuente
Recientemente tuve el mismo problema y utilicé la solución proporcionada por Harry Joy. Sin embargo, esa solución solo funciona con enumación de base cero. Tampoco lo consideraría un ahorro, ya que no trata con índices que están fuera de rango.
La solución que terminé usando puede que no sea tan simple, pero es completamente segura y no dañará el rendimiento de su código incluso con grandes enumeraciones:
Si está seguro de que nunca estará fuera de rango con su índice y no quiere usarlo
UNKNOWN
como lo hice anteriormente, por supuesto, también puede hacerlo:fuente