Wenn Sie einen Enum -Typ definieren, definieren Sie im Wesentlichen eine Klasse, aber viele Details werden vom Compiler für Sie gefüllt. In gewissem Maße ist die Rolle des Keywords des Enum -Keywords wie Klasse oder Schnittstelle.
Wenn Sie einen Enum -Typ mit "Enum" definieren, werden die von Ihnen definierten Typen im Wesentlichen aus der Klasse java.lang.enum geerbt, und das Mitglied jedes Enum ist tatsächlich eine Instanz des von Ihnen definierten Enum -Typs. Sie sind alle standardmäßig bis zum Schluss, sodass Sie sie nicht ändern können, sie sind auch statische Mitglieder, sodass Sie sie direkt über den Typnamen verwenden können, und natürlich sind sie alle öffentlich.
Zum Beispiel:
Opconstants.javapublic enum opconstants {Turn_Left, Turn_right, Shoot} In diesem Beispiel erbt Opconstants von java.lang.enum. Jedes Enum -Mitglied wie Turn_Left, Turn_right, Shoot. Sie sind alle Objektinstanzen von Opconstants, dh Objektinstanzen. Es gibt natürlich einige Methoden oben. Beispielsweise wird die Methode toString () überschrieben, mit der Sie die Zeichenfolge Beschreibung des Enumswerts direkt erhalten können. Mit der durch das Enum -Objekt definierten Werte () -Methoden können Sie alle Enum -Instanzen erhalten und in einem Array zurückgeben. Sie verwenden diese beiden Methoden, um einfach den Inhalt von OpConstants anzuzeigen:
Showenum.javapublic Class Showenum {public static void main (String [] args) {für (opConstants konstant: opconstants.Values ()) {System.out.println (konstant.toString ()); }}} Grundsätzlich ruft Println () automatisch ToString () auf, so dass es tatsächlich in Ordnung ist, nicht toString () zu schreiben. Das Ausführungsergebnis ist wie folgt:
Turn_leftturn_rightshoot
Sie können die Methode "==" oder Equals () verwenden, um die Enum -Objekte zu vergleichen. "" == "" vergleichen, ob die von Ihnen angegebenen Enum -Objekte gleich sind (dh denselben Speicherort), während Equals () den Inhalt zweier Enum -Objekte im Wesentlichen vergleichen wird. Standardmäßig wird es basierend auf dem String -Wert des Enum verglichen.
Mit der ValueOF () -Methode können Sie versuchen, die angegebene Zeichenfolge in eine Enum -Instanz umzuwandeln. Sie können die Vergleiche () -Methode verwenden, mit der die Reihenfolge der beiden Enum -Objekte bei der Aufzählung verglichen werden können. Hier ist ein Beispiel
Showenum.javapublic Class Showenum {public static void main (String [] args) {enumCompareto (opConstants.Valueof (args [0])); } public static void enumCompareto (opConstants konstant) {System.out.println (konstant); für (opconstants c: opconstants.values ()) {System.out.println (constant.comPareto (c)); }}} Ausführungsergebnisse:
$ Java Showenum Turn_Right
Turn_right10-1
Geben Sie einen positiven Wert zurück, der angibt, dass die Reihenfolge vor dem Vergleich des Enum -Objekts ist, nachdem der negative Wert angegeben wurde, und 0 bedeutet, dass die Positionen der beiden gegenseitig vergleichenden Enumwerte gleich sind.
Für jedes Aufzählungsmitglied können wir die ordinal () -Methode verwenden, um den Positionsindex in der Aufzählungsreihenfolge zu erhalten, und der Standard startet mit 0, z. B.:
Showenum.javapublic Class Showenum {public static void main (String [] args) {für (opconstants c: opconstants.Values ()) {System.out.printf ("%d%s%n", C.Orordinal (), c); }}} Ausführungsergebnisse:
0 Turn_left1 Turn_right2 Shooting
Mit dem Keyword des Enum -Schlüsselworts kann eine Enum -Klasse definiert werden, und die relevanten Konstanten können in einer Klasse geschrieben werden. Schauen wir uns ein Beispiel unten an.
Der folgende Code:
Klasse testclass {private testClass () {} // einen privaten Konstruktor definieren und kein Objekt von außen instanziieren kann // zwei Instanzen A und B Public statische endgültige Testklasse a = new TestClass (); öffentliche statische endgültige Testklasse B = neuer TestClass ();}Sie können stattdessen Enum -Typen verwenden:
enum testClass01 {a, b;}Verwendung:
Ein Auflauf kann auch Konstruktoren, Felder und Methoden haben:
enum testclass02 {a ("a") // beim Erstellen eines Objekts, Konstruktorparameter übergeben, b ("b"); privater Stringwert; private TestClass02 (String -Wert) {this.Value = value; } public String getValue () {return this.value; }}Aufzählungen können auch abstrakte Methoden haben:
enum testClass03 {a () {// Abstract Methode public void type () {System.out.println ("ausgezeichnet"); }}, B () {public void type () {System.out.println ("good"); }}; public abstract void type (); // abstrakte Methode definieren}Testmethode:
public class test02 {public static void main (String [] args) {print (testclass02.a); // Pause in Enum -Parametern} public static void print (testclass02 t) {System.out.println (t.getValue ()); } enum testClass02 {a ("a"), b ("b"); privater Stringwert; private TestClass02 (String -Wert) {this.Value = value; } public String getValue () {return this.value; }}}Auslaufergebnisse:
AAUTHOR: START Sign: Solange Sie es noch versuchen, ist es kein Misserfolg.