J'ai juste essayé la même chose et j'ai trouvé la solution suivante:
public enum Countries {
TEXAS,
FLORIDA,
OKLAHOMA,
KENTUCKY;
private static Countries[] list = Countries.values();
public static Countries getCountry(int i) {
return list[i];
}
public static int listGetLastIndex() {
return list.length - 1;
}
}
La classe a ses propres valeurs enregistrées dans un tableau, et j'utilise le tableau pour obtenir l'énumération à l'indexposition. Comme mentionné ci-dessus, les tableaux commencent à compter à partir de 0, si vous voulez que votre index commence à '1', changez simplement ces deux méthodes pour:
public static String getCountry(int i) {
return list[(i - 1)];
}
public static int listGetLastIndex() {
return list.length;
}
À l'intérieur de ma main, j'obtiens l'objet de pays nécessaire avec
public static void main(String[] args) {
int i = Countries.listGetLastIndex();
Countries currCountry = Countries.getCountry(i);
}
qui définit currCountry sur le dernier pays, dans ce cas, Countries.KENTUCKY.
N'oubliez pas que ce code est très affecté par ArrayOutOfBoundsExceptions si vous utilisez des indices codés en dur pour obtenir vos objets.