Essentiellement, ce que j’ai fait est d’écrire une énumération pour les États, et je veux non seulement pouvoir y accéder comme les États, mais aussi leur abréviation et déterminer s’ils étaient ou non une colonie d’origine.
public enum States {
...
MASSACHUSETTS("Massachusetts", "MA", true),
MICHIGAN("Michigan", "MI", false),
...; //so on and so forth for all fifty states
private final Object[] values;
States(Object... vals) {
values = vals;
}
public String FULL() {
return (String) values[0];
}
public String ABBR() {
return (String) values[1];
}
public boolean ORIGINAL_COLONY(){
return (boolean) values[2];
}
}
Cela semble fonctionner comme je l’attendais. je peux
System.out.println(States.ALABAMA); // Prints "ALABAMA"
System.out.println(States.ALABAMA.FULL()); // Prints "Alabama"
System.out.println(States.ALABAMA.ABBR()); // Prints "AL"
System.out.println(States.ALABAMA.ORIGINAL_COLONY());// Prints "false"
Pour ce scénario particulier impliquant des enums, est-ce la meilleure façon de procéder ou existe-t-il une meilleure façon de configurer et de formater cette enum? Merci à tous d'avance!
Premièrement, les méthodes enum ne devraient pas être en majuscules. Ce sont des méthodes comme les autres méthodes, avec la même convention de nommage.
Deuxièmement, ce que vous faites n'est pas la meilleure façon de configurer votre enum. Au lieu d'utiliser un tableau de valeurs pour les valeurs, vous devez utiliser des variables distinctes pour chaque valeur. Vous pouvez ensuite implémenter le constructeur comme toute autre classe.
Voici comment vous devriez le faire avec toutes les suggestions ci-dessus:
public enum States {
...
MASSACHUSETTS("Massachusetts", "MA", true),
MICHIGAN ("Michigan", "MI", false),
...; // all 50 of those
private final String full;
private final String abbr;
private final boolean originalColony;
private States(String full, String abbr, boolean originalColony) {
this.full = full;
this.abbr = abbr;
this.originalColony = originalColony;
}
public String getFullName() {
return full;
}
public String getAbbreviatedName() {
return abbr;
}
public boolean isOriginalColony(){
return originalColony;
}
}