Einsteigerleitfaden für Java eNum – Warum und wofür sollte ich Enum verwenden? Java-Enum-Beispiele
Veröffentlicht: 2019-04-23 Enums sind Listen von constants
wie unveränderliche Variablen. Kennen Sie das Final keyword
? Es ist wie es ist.
Wenn Sie eine vordefinierte Liste von Werten benötigen, die eine Art von numerischen oder textuellen Daten darstellen, sollten Sie eine Aufzählung verwenden. In einem Schachspiel könnten Sie beispielsweise die verschiedenen Arten von Figuren als Aufzählung darstellen:
1 2 3 4 5 6 7 8 |
enum ChessPiece { PAWN , ROOK , KNIGHT , BISHOP , QUEEN , KING ; } |
Sie sollten Aufzählungen immer dann verwenden, wenn eine Variable (insbesondere ein Methodenparameter) nur einen aus einer kleinen Menge möglicher Werte annehmen kann. Beispiele wären Dinge wie Typkonstanten (Vertragsstatus: „unbefristet“, „befristet“, „Lehrling“) oder Flags („jetzt ausführen“, „Ausführung verschieben“).
Wenn Sie Enums anstelle von Ganzzahlen (oder String-Codes) verwenden, verbessern Sie die Kompilierzeitüberprüfung und vermeiden Fehler durch die Übergabe ungültiger Konstanten, und Sie dokumentieren, welche Werte zulässig sind.
Java -Beispiel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public enum Company { EBAY , PAYPAL , GOOGLE , YAHOO , ATT } Company cName ; public CrunchifyEnumExample ( Company cName ) { this . cName = cName ; } public void companyDetails ( ) { switch ( cName ) { case EBAY : System . out . println ( "EBAY: Biggest Market Place in the World." ) ; break ; case PAYPAL : System . out . println ( "PAYPAL: Simplest way to manage Money." ) ; break ; case GOOGLE : case YAHOO : System . out . println ( "YAHOO: 1st Web 2.0 Company." ) ; break ; default : System . out . println ( "DEFAULT: Google - biggest search giant.. ATT - my carrier provider.." ) ; break ; } } public static void main ( String [ ] args ) { CrunchifyEnumExample ebay = new CrunchifyEnumExample ( Company . EBAY ) ; ebay . companyDetails ( ) ; CrunchifyEnumExample paypal = new CrunchifyEnumExample ( Company . PAYPAL ) ; paypal . companyDetails ( ) ; CrunchifyEnumExample google = new CrunchifyEnumExample ( Company . GOOGLE ) ; google . companyDetails ( ) ; CrunchifyEnumExample yahoo = new CrunchifyEnumExample ( Company . YAHOO ) ; yahoo . companyDetails ( ) ; CrunchifyEnumExample att = new CrunchifyEnumExample ( Company . ATT ) ; att . companyDetails ( ) ; } } |
Ausgabe:
1 2 3 4 5 6 7 |
EBAY : Biggest Market Place in the World . PAYPAL : Simplest way to manage Money . YAHOO : 1st Web 2.0 Company . YAHOO : 1st Web 2.0 Company . DEFAULT : Google - biggest search giant . . ATT - my carrier provider . . Process finished with exit code 0 |
Einige sehr wichtige Punkte zu Java Enum:
Punkt 1
Alle Aufzählungen erweitern implizit java.lang.Enum
. Da Java keine Mehrfachvererbung unterstützt, kann eine Aufzählung nichts anderes erweitern.
Punkt-2
Enum in Java are type-safe:
Enum hat einen eigenen Namensraum. Dies bedeutet, dass Ihre Aufzählung im folgenden Beispiel einen Typ hat, z. B. „Firma“, und Sie können keinen anderen Wert als den in Aufzählungskonstanten angegebenen Wert zuweisen.
1 2 3 4 5 6 |
public enum Company { EBAY , PAYPAL , GOOGLE , YAHOO , ATT } Company cName = Company . EBAY ; cName = 1 ; // Compilation Error |

Punkt-3
Sie können Werte von Aufzählungskonstanten zum Zeitpunkt der Erstellung angeben. MyEnum.values()
gibt ein Array der Werte von MyEnum zurück.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package com . crunchify . tutorial ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public enum Company { EBAY ( 30 ) , PAYPAL ( 10 ) , GOOGLE ( 15 ) , YAHOO ( 20 ) , ATT ( 25 ) ; private int value ; private Company ( int value ) { this . value = value ; } } public static void main ( String [ ] args ) { for ( Company cName : Company . values ( ) ) { System . out . println ( "Company Value: " + cName . value + " - Company Name: " + cName ) ; } } } |
Ausgabe:
1 2 3 4 5 |
Company Value : 30 - Company Name : EBAY Company Value : 10 - Company Name : PAYPAL Company Value : 15 - Company Name : GOOGLE Company Value : 20 - Company Name : YAHOO Company Value : 25 - Company Name : ATT |
Punkt-4
Aufzählungskonstanten sind implizit statisch und endgültig und können nach ihrer Erstellung nicht mehr geändert werden.
Punkt-5
Enum kann sicher verglichen werden mit:
- Switch-Case-Anweisung
- == Betreiber
- .equals()-MethodeBitte folgen Sie dem vollständigen Tutorial.
1 2 3 4 |
Company eBay = Company . EBAY ; if ( eBay == Company . EBAY ) { log . info ( "enum in java can be compared using ==" ) ; } |
Punkt-6
Sie können keine Instanz von Enums erstellen, indem Sie den new-Operator in Java verwenden, da der Konstruktor von Enum in Java nur privat sein kann und Enums-Konstanten nur innerhalb von Enums selbst erstellt werden können.
Punkt-7
Eine Instanz von Enum in Java wird erstellt, wenn Enum-Konstanten zum ersten Mal aufgerufen oder im Code referenziert werden.
Punkt-8
Eine Aufzählung gibt eine Liste von konstanten Werten an, die einem Typ zugewiesen sind.
Punkt-9
Eine Aufzählung kann außerhalb oder innerhalb einer Klasse deklariert werden, aber NICHT in einer Methode.
Punkt-10
Eine außerhalb einer Klasse deklarierte Aufzählung darf NICHT als static, final , abstract, protected oder private gekennzeichnet werden
Punkt-11
Aufzählungen können Konstruktoren, Methoden, Variablen und konstante Klassenkörper enthalten.
Punkt-12
Aufzählungskonstanten können Argumente an den Aufzählungskonstruktor senden, wobei die Syntax BIG(8) verwendet wird, wobei das int-Literal 8 an den Aufzählungskonstruktor übergeben wird.
Punkt-13
Aufzählungskonstruktoren können Argumente haben und überladen werden.
Punkt-14
Enum-Konstruktoren können NIEMALS direkt im Code aufgerufen werden. Sie werden immer automatisch aufgerufen, wenn ein Enum initialisiert wird.
Punkt-15
Das Semikolon am Ende einer Enum-Deklaration ist optional.
Diese sind legal:
- enum Foo { EINS, ZWEI, DREI}
- enum Foo { EINS, ZWEI, DREI};
Ein weiteres einfaches Beispiel für Java eNUM:
Aufzählungen sind Listen von Konstanten. Wenn Sie eine vordefinierte Liste von Werten benötigen, die eine Art von numerischen oder textuellen Daten darstellen, sollten Sie eine Aufzählung verwenden.
Sie sollten Aufzählungen immer dann verwenden, wenn eine Variable (insbesondere ein Methodenparameter) nur einen aus einer kleinen Menge möglicher Werte annehmen kann. Beispiele wären Dinge wie Typkonstanten (Vertragsstatus: „unbefristet“, „befristet“, „Lehrling“) oder Flags („jetzt ausführen“, „Ausführung verschieben“).
Wenn Sie Enums anstelle von Ganzzahlen (oder String-Codes) verwenden, verbessern Sie die Kompilierzeitüberprüfung und vermeiden Fehler durch die Übergabe ungültiger Konstanten, und Sie dokumentieren, welche Werte zulässig sind.
Zwischendurch kann eine übermäßige Verwendung von Aufzählungen bedeuten, dass Ihre Methoden zu viel leisten (es ist oft besser, mehrere separate Methoden zu haben, als eine Methode, die mehrere Flags verwendet, die das ändern, was sie tut), aber wenn Sie Flags verwenden oder Codes eingeben müssen, Aufzählungen sind der richtige Weg.
Dies ist ein sehr einfaches Java-eNum-Beispiel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public enum CrunchifyEnumCompany { GOOGLE ( "G" ) , YAHOO ( "Y" ) , EBAY ( "E" ) , PAYPAL ( "P" ) ; private String companyLetter ; private CrunchifyEnumCompany ( String s ) { companyLetter = s ; } public String getCompanyLetter ( ) { return companyLetter ; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package com . crunchify . tutorials ; import com . crunchify . tutorials . CrunchifyEnumCompany ; /** * @author Crunchify.com */ public class CrunchifyEnumExample { public static void main ( String [ ] args ) { System . out . println ( "Get enum value for Comapny 'eBay': " + CrunchifyEnumCompany . EBAY . getCompanyLetter ( ) ) ; } } |
Ausgabe:
1 |
Get enum value for Comapny 'eBay' : Value : E |