Heim > Java > javaLernprogramm > Was sind Aufzählungen in Java?

Was sind Aufzählungen in Java?

Mary-Kate Olsen
Freigeben: 2025-01-03 00:17:08
Original
163 Leute haben es durchsucht

¿Qué son los enums en Java?

In Java sind Aufzählungen oder Aufzählungen ein spezieller Klassentyp, der eine Gruppe von Konstanten (unveränderlichen Werten) darstellt, also einen festen Satz von Werten, die sich im Laufe der Zeit nicht ändern , sodass alle möglichen Werte zur Kompilierungszeit bekannt sind, zum Beispiel Wochentage, Monate des Jahres, Farben usw.

Da es sich bei einer Aufzählung um einen Klassentyp handelt, könnte man meinen, dass wir sie instanziieren müssen, um sie verwenden zu können. Dies ist jedoch nicht erforderlich, obwohl sie über dieselben Fähigkeiten wie eine normale Klasse verfügt, z. B. Attribute, Methoden, Konstruktoren usw Selbst bei der Implementierung von Schnittstellen besteht die einzige Überlegung darin, dass Sie das Konzept der Vererbung nicht in einer Aufzählung implementieren können. Sein Hauptziel besteht darin, unsere eigenen Datentypen (Enumerated Data Types) zu definieren. Einige hervorzuhebende Eigenschaften einer Aufzählung sind:

  • Jede Aufzählung wird intern als Klasse mithilfe des Klassentyps implementiert.
  • Jede Konstante einer Aufzählung stellt ein Objekt vom Typ Aufzählung dar.
  • Alle Enumerationen erweitern implizit java.lang.Enum. Da eine Klasse nur von einer übergeordneten Klasse aus erweitert werden kann, kann eine Enumeration nicht von einer anderen Klasse aus erweitert werden.
  • Jede Konstante in einer Aufzählung ist implizit vom Typ public static final.
  • Sie können in Kontrollstrukturen wie Schaltern verwendet werden.
  • Eine main()-Methode kann innerhalb einer Aufzählung deklariert werden.
  • Die toString()-Methode wird überschrieben, um den Namen der Konstante zurückzugeben.

Deklaration einer Enumeration

Wir können eine Aufzählung innerhalb oder außerhalb einer Klasse oder in einer separaten Datei deklarieren, jedoch nicht innerhalb einer Methode. Die Syntax zum Deklarieren einer Enumeration lautet wie folgt:

enum NombreEnum {
    CONSTANTE1, CONSTANTE2, CONSTANTE3, ...
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Konventionell werden die Konstanten einer Aufzählung in Großbuchstaben geschrieben.
Typischerweise ist die erste Zeile einer Aufzählung die Deklaration der Konstanten, gefolgt von den Attributen, Methoden und Konstruktoren, falls erforderlich.

// Enum declarado fuera de una clase
enum Color {
    RED, GREEN, BLUE;
}

public class Main {
    public static void main(String[] args) {}
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
// Enum declarado dentro de una clase
public class Main {
    public static void main(String[] args) {}

    enum Color {
        RED, GREEN, BLUE;
    }
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Um auf eine der Konstanten einer Aufzählung zuzugreifen, müssen wir nur den Namen der Aufzählung, gefolgt von einem Punkt und dem Namen der Konstante verwenden.

Color color = Color.RED;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Es ist vielleicht nicht so notwendig, aber wenn wir den Namen einer Konstante so erhalten müssen, wie sie deklariert wurde, können wir die Methode name() verwenden, obwohl sie bei Bedarf manchmal von der Methode toString() weggelassen wird etwas Beschreibenderes .

System.out.println(Color.RED.name()); // RED
System.out.println(Color.RED); // RED
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Konstanten aus einer Enumeration abrufen

Wir können alle Konstanten einer Aufzählung mit der Methode „values()“ erhalten, die ein Array mit allen Konstanten zurückgibt.

enum NombreEnum {
    CONSTANTE1, CONSTANTE2, CONSTANTE3, ...
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Falls wir eine Konstante basierend auf ihrem Namen erhalten müssen, weil wir sie entweder als Eingabe, aus einer Datei oder aus einer Datenbank erhalten, können wir die Methode valueOf() verwenden, wir müssen dies nur berücksichtigen Bei der Methode wird die Groß-/Kleinschreibung beachtet. Wenn der Name also mit keiner Konstante übereinstimmt, wird eine IllegalArgumentException ausgelöst.

// Enum declarado fuera de una clase
enum Color {
    RED, GREEN, BLUE;
}

public class Main {
    public static void main(String[] args) {}
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Zuvor haben wir gesehen, wie wir alle Konstanten als Array abrufen können. Sie denken also vielleicht: Wenn es möglich ist, den Index einer Konstante zu erhalten, lautet die Antwort: Ja, wir können zum Abrufen die Methode ordinal() verwenden der Index einer Konstante, genau wie in einem Array beginnt der Index bei Null.

// Enum declarado dentro de una clase
public class Main {
    public static void main(String[] args) {}

    enum Color {
        RED, GREEN, BLUE;
    }
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Verwenden Sie eine Enumeration für einen Switch

Einer der Vorteile der Verwendung einer Enumeration besteht darin, dass wir sie in einer Switch-Steuerungsstruktur verwenden können, wodurch wir den Code vereinfachen und lesbarer machen können.

Color color = Color.RED;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Attribute und Konstruktoren in einer Enumeration

Jede der Konstanten einer Aufzählung kann benutzerdefinierte Attribute haben, genau wie in einer normalen Klasse. Es muss lediglich berücksichtigt werden, dass es einen Konstruktor geben muss, der die Attribute initialisiert. Auf diese Weise wird dies beim Laden der Konstanten der Fall sein wird implizit an den entsprechenden Konstruktor gerufen. Da wir wissen, dass jede Konstante ein Objekt vom Typ enum in der Deklaration ist, müssen wir die Werte der Attribute entsprechend dem Konstruktor übergeben.

System.out.println(Color.RED.name()); // RED
System.out.println(Color.RED); // RED
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Für diese Aufzählung haben wir 3 Konstanten mit jeweils 3 Attributen, Name, Ebene und Beschreibung, zusätzlich zu einem Code-Attribut, das für alle Konstanten gemeinsam ist, aber nicht im Konstruktor initialisiert werden muss, da dies der Fall ist ein konstanter Wert. Jedes der Attribute kann unterschiedliche Zugriffsmodifikatoren haben, alles hängt von unseren Bedürfnissen ab.

Methoden in einer Aufzählung

Wenn wir das vorherige Beispiel betrachten, können wir daraus schließen, dass wir, da jedes Attribut vom Typ privat ist, eine Möglichkeit benötigen, auf sie zuzugreifen, damit wir Getter-Methoden für jedes der Attribute deklarieren können.

Color[] colors = Color.values();

for (Color color : colors) {
    System.out.println(color);
}
Nach dem Login kopieren

Wir können in einer Aufzählung auch Hilfsmethoden deklarieren, beispielsweise eine Methode, die es uns ermöglicht, eine Konstante basierend auf einer Ebene zu erhalten. Sie müssen nur bedenken, dass die Methode statisch sein muss, da wir keine Aufzählung instanziieren können.

enum NombreEnum {
    CONSTANTE1, CONSTANTE2, CONSTANTE3, ...
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Abstrakte Methoden in einer Aufzählung

Wir haben bereits gesehen, wie man Methoden in einer Aufzählung implementiert, aber wenn wir jede Konstante benötigen, um eine Methode anders zu implementieren, können wir eine abstrakte Methode deklarieren und jede Konstante muss sie auf ihre eigene Weise implementieren, wenn man bedenkt, dass dies die Syntax ist ändert sich ein wenig in der Deklaration der Konstanten. Lassen Sie uns beispielsweise eine abstrakte Methode showPermissions() deklarieren, die die Berechtigungen jeder Konstante über die Konsole ausgibt.

// Enum declarado fuera de una clase
enum Color {
    RED, GREEN, BLUE;
}

public class Main {
    public static void main(String[] args) {}
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Schnittstellen in einer Enumeration

Eine Aufzählung kann eine oder mehrere Schnittstellen implementieren, genau wie eine normale Klasse, es ist nur notwendig, die Schnittstellen durch ein Komma zu trennen.

// Enum declarado dentro de una clase
public class Main {
    public static void main(String[] args) {}

    enum Color {
        RED, GREEN, BLUE;
    }
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

EnumSet und EnumMap

Java bietet zwei Klassen für die Arbeit mit Enum, EnumSet und EnumMap, die effizienter sind als die Klassen HashSet bzw. HashMap, da sie für die Arbeit mit Enum konzipiert sind. EnumSet ist eine Sammlung eindeutiger Elemente einer Aufzählung, während EnumMap eine Implementierung von Map ist, die eine Aufzählung als Schlüssel verwendet.

Color color = Color.RED;
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Vollständiges Beispiel

Wir haben bereits die verschiedenen Merkmale einer Aufzählung gesehen. Schauen wir uns nun ein Beispiel an, in dem wir sie alle nutzen.

System.out.println(Color.RED.name()); // RED
System.out.println(Color.RED); // RED
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Abschluss

Enums sind eine sehr nützliche Funktion in Java, da sie es uns ermöglichen, unsere eigenen Datentypen zu definieren, was uns hilft, unseren Code lesbarer und wartbarer zu machen und es uns ermöglicht, effizienter mit Konstanten zu arbeiten. Obwohl es sich nicht um eine neue Funktion handelt, ist es wichtig, sie zu kennen und zu wissen, wie man sie verwendet, da sie uns in vielen Fällen dabei helfen kann, unseren Code zu vereinfachen.

Das obige ist der detaillierte Inhalt vonWas sind Aufzählungen in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage