Die Aufzählung wird als Aufzählungstyp bezeichnet und scheint eine ausgezeichnete zu sein, die mehrere Konstanten zusammensetzen kann. Da ich hart studiert habe, werde ich es für den persönlichen Gebrauch zusammenfassen, während ich das Schreiben von Artikeln übe. Das Ziel war ein Artikel, den Sie sich ansehen und überprüfen können, wenn Sie denken: "Wie verwenden Sie das?" Da dieser Artikel nur die grundlegende Verwendung von Aufzählungstypen behandelt, wird die interne Verarbeitung nicht erwähnt.
Der Punkt ist, dass Sie Konstanten gemeinsam verwalten können. Es ist jedoch erforderlich, den Code jedes Mal neu zu schreiben, wenn die Konstante geändert wird. Überlegen Sie vor der Implementierung, ob es wirklich als Aufzählungstyp definiert werden sollte.
In diesem Abschnitt wird die Definition des Aufzählungstyps vorgestellt. Hier ist ein sehr einfaches Codebeispiel:
public enum Fruit { //"class" ⇒ "enum"Umschreiben an
//Enumerator-Definition
APPLE,
ORANGE,
PEACH;
}
public class Basket {
public static void main(String[] args) {
Fruit flt = Fruit.ORANGE; //Holen Sie sich Enum
System.out.println( flt.toString() ); //ORANGE
}
}
Eine Aufzählung mit einer der eingestellten Konstanten (Enumeratoren) kann als Variable gehalten und bei Bedarf abgerufen werden. Im obigen Beispiel werden "APPLE, ORANGE, PEACH" als Konstanten eingegeben, sodass keine Bedenken bestehen, dass andere Zeichenfolgen ("GRAPE" usw.) ausgegeben werden. Auf diese Weise besteht das Merkmal und der Vorteil von enum darin, dass nur vordefinierte Konstanten verarbeitet werden können.
Enumeratoren können auch definiert werden, indem mehrere Grund- und Klassentypen kombiniert werden. Das Folgende ist ein Beispiel.
public enum Fruit {
APPLE("Apfel", 1),
ORANGE("Orange", 2),
PEACH("Pfirsiche", 3);
private String label;
private int id;
private Fruit(String label, int id) { //Deklarieren Sie den Konstruktor als privat
this.label = label;
this.id = id;
}
public String getLabel() {
return label;
}
public int getId() {
return id;
}
}
public class Basket {
public static void main(String[] args) {
Fruit flt = Fruit.APPLE;
System.out.println( flt.getLabel() ); //Apfel
System.out.println( Fruit.PEACH.getId() ); //3
}
}
Im obigen Beispiel ist der Enumerator eine Kombination aus einer Zeichenfolge und einer Ganzzahl. Wenn Sie die Klasse "Obst" und die Klasse "Korb" vergleichen, können Sie sehen, dass sie jeweils die entsprechenden Werte erhalten.
Um Enumeratoren in Kombination zu definieren und zu betreiben, müssen Felder, Konstruktoren bzw. Methoden definiert werden. Umgekehrt können Sie nach Bedarf Felder, Konstruktoren und Methoden definieren.
Ein Beispiel für die Definition einer einfachen Methode ist unten dargestellt.
public enum Fruit {
APPLE("Apfel", 1),
ORANGE("Orange", 2),
PEACH("Pfirsiche", 3);
private String label;
private int id;
private Fruit(String label, int id) {
this.label = label;
this.id = id;
}
public String getLabel() {
return label;
}
public int getId() {
return id;
}
public static Fruit getById(int id) {
for( Fruit flt : Fruit.values() ) { //Scannen mit erweiterter Anweisung
if( flt.getId() == id ) {
return flt; //Gibt Instanzen zurück, die den Kriterien entsprechen
}
}
return null;
}
}
public class Basket {
public static void main(String[] args) {
Fruit flt = Fruit.getById(2);
System.out.println( flt.getLabel() ); //Orange
}
}
Abhängig von der Methode ist es nicht immer erforderlich, sie in der Enum-Klasse zu definieren (z. B. kann die Methode "getById" im obigen Beispiel problemlos ausgeführt werden, auch wenn sie in einer anderen Klasse definiert ist), aber allgemeine Methoden rund um den Enumerator werden zusammengefasst. Wäre praktisch.
Aufzählungstypen haben von Anfang an nützliche Methoden. Obwohl es im Codebeispiel im vorherigen Abschnitt beschrieben ist, werde ich es in diesem Abschnitt noch einmal vorstellen.
public class Basket {
public static void main(String[] args) {
Fruit flt = Fruit.ORANGE;
System.out.println( flt.toString() ); //ORANGE
}
}
toString ()
ist eine Methode, um die Zeichenfolge als Enumerator zu deklarieren.
name ()
ergibt das gleiche Ergebnis, scheint aber veraltet zu sein.
Der Unterschied besteht darin, dass "toString ()" überschrieben werden kann, "name ()" jedoch nicht.
public class Basket {
public static void main(String[] args) {
Fruit flt = Fruit.valueOf("PEACH");
System.out.println( flt.getLabel() ); //Pfirsiche
}
}
valueOf (String name)
ist eine Methode, die einen Enumerator zurückgibt, der mit der Zeichenfolge der Argumente übereinstimmt.
Beachten Sie, dass, wenn kein übereinstimmender Enumerator vorhanden ist, eine "IllegalArgumentException" zurückgegeben wird.
public class Basket {
public static void main(String[] args) {
for( Fruit flt : Fruit.values() ) {
System.out.println( flt.getLabel() ); //Apfel
//Orange
//Pfirsiche
}
}
}
values ()
ist eine Methode, die hauptsächlich in der erweiterten for-Anweisung verwendet wird.
Wie im obigen Beispiel kann der Enumerator umfassend verarbeitet werden.
Diesmal habe ich zum ersten Mal einen Qiita-Artikel geschrieben, aber mir wurde klar, dass mir das Wissen fehlte. Ich habe auch die unklaren Punkte überprüft, indem ich mir die Materialien hier und da angesehen habe, aber ich habe auch verstanden, dass ich den Ort, den ich richtig gesehen habe, vergessen würde, wenn ich ihn nicht aufzeichnen würde. Ich möchte weiterhin Artikel als persönliche Zusammenfassung schreiben.
Über enum (Qiita-Artikel) Benimm dich mit Enum (Qiita-Artikel)
Recommended Posts