logo

opsomming op Java

Op Java, Opsommingen of Java Enum dienen tot doel een groep benoemde constanten in een programmeertaal weer te geven. Java-enums worden gebruikt wanneer we tijdens het compileren alle mogelijke waarden kennen, zoals keuzes in een menu, afrondingsmodi, opdrachtregelvlaggen, enz. De set constanten in een enum-type hoeft niet altijd vast te blijven.

Wat is opsomming of opsomming in Java?

Een Java-opsomming is een klassetype. Hoewel we geen enum hoeven te instantiëren met behulp van nieuw, het heeft dezelfde mogelijkheden als andere klassen. Dit feit maakt Java-opsomming tot een zeer krachtig hulpmiddel. Net als klassen kun je ze constructors geven, instantievariabelen en -methoden toevoegen en zelfs interfaces implementeren.



Enum-voorbeeld:

De 4 kleuren in een stapel speelkaarten kunnen 4 tellers zijn genaamd Klaver, Ruiten, Hart en Schoppen, die behoren tot een opgesomd type genaamd Kleur. Andere voorbeelden zijn onder meer natuurlijke opgesomde typen (zoals de planeten, dagen van de week, kleuren, richtingen, enz.).

Eén ding om in gedachten te houden is dat, in tegenstelling tot klassen, opsommingen geen andere klassen overnemen, noch kunnen worden uitgebreid (dat wil zeggen superklasse worden). We kunnen er ook variabelen, methoden en constructors aan toevoegen. Het hoofddoel van een opsomming is het definiëren van onze eigen gegevenstypen (Enumerated Data Types).

Verklaring van enum in Java

Enum-declaratie kan buiten een klasse of binnen een klasse worden gedaan, maar niet binnen een methode.



1. Verklaring buiten de les

Java






// A simple enum example where enum is declared> // outside any class (Note enum keyword instead of> // class keyword)> enum> Color {> >RED,> >GREEN,> >BLUE;> }> public> class> Test {> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }>

>

>

Uitvoer

RED>

2. Verklaring binnen een klas

Java


ster topologie



// enum declaration inside a class.> public> class> Test {> >enum> Color {> >RED,> >GREEN,> >BLUE;> >}> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }>

>

>

Uitvoer

RED>
  • De eerste regel binnen de enum moet een lijst met constanten zijn en vervolgens andere zaken zoals methoden, variabelen en constructors.
  • Volgens Java-naamgevingsconventies , wordt aanbevolen dat we de constante met hoofdletters benoemen

Eigenschappen van Enum op Java

Er zijn bepaalde eigenschappen gevolgd door Enum, zoals hieronder vermeld:

  • Elke enum wordt intern geïmplementeerd met behulp van Class.
  • Elke enum-constante vertegenwoordigt een voorwerp van het type enum.
  • Enum-type kan als argument worden doorgegeven schakelaar verklaringen.
  • Elke enumconstante is altijd impliciet openbare statische finale . Sinds het is statisch , we hebben er toegang toe door de enum-naam te gebruiken. Sinds het is laatste , kunnen we geen onderliggende enums maken.
  • Wij kunnen de aangifte doen main() methode binnen de enum. Daarom kunnen we de enum rechtstreeks vanaf de opdrachtprompt oproepen.

Hieronder vindt u de implementatie van de bovenstaande eigenschappen:

Java




// A Java program to demonstrate working on enum> // in switch case (Filename Test. Java)> import> java.util.Scanner;> // An Enum class> enum> Day {> >SUNDAY,> >MONDAY,> >TUESDAY,> >WEDNESDAY,> >THURSDAY,> >FRIDAY,> >SATURDAY;> }> // Driver class that contains an object of 'day' and> // main().> public> class> Test {> >Day day;> >// Constructor> >public> Test(Day day) {>this>.day = day; }> >// Prints a line about Day using switch> >public> void> dayIsLike()> >{> >switch> (day) {> >case> MONDAY:> >System.out.println(>'Mondays are bad.'>);> >break>;> >case> FRIDAY:> >System.out.println(>'Fridays are better.'>);> >break>;> >case> SATURDAY:> >case> SUNDAY:> >System.out.println(>'Weekends are best.'>);> >break>;> >default>:> >System.out.println(>'Midweek days are so-so.'>);> >break>;> >}> >}> >// Driver method> >public> static> void> main(String[] args)> >{> >String str =>'MONDAY'>;> >Test t1 =>new> Test(Day.valueOf(str));> >t1.dayIsLike();> >}> }>

>

>

rdbms-normalisatie
Uitvoer

Mondays are bad.>

Java Enum-programma's

1. Hoofdfunctie binnen Enum

We kunnen een hoofdfunctie binnen een enum declareren, omdat we de enum rechtstreeks vanaf de opdrachtprompt kunnen aanroepen.

Hieronder vindt u de implementatie van de bovenstaande eigenschap:

Java




// A Java program to demonstrate that we can have> // main() inside enum class.> enum> Color {> >RED,> >GREEN,> >BLUE;> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >}> }>

>

>

Uitvoer

RED>

2. Loop door Enum

We kunnen de Enum herhalen met behulp van waarden() en lus. waarden() functie retourneert een array van Enum-waarden als constanten waarmee we de waarden kunnen herhalen.

Hieronder ziet u de implementatie van de lus door Enum:

Java




// Java Program to Print all the values> // inside the enum using for loop> import> java.io.*;> // Enum Declared> enum> Color {> >RED,> >GREEN,> >BLUE;> }> // Driver Class> class> GFG {> >// Main Function> >public> static> void> main(String[] args)> >{> >// Iterating over all the values in> >// enum using for loop> >for> (Color var_1 : Color.values()) {> >System.out.println(var_1);> >}> >}> }>

>

>

Uitvoer

RED GREEN BLUE>

3. Enum in een Switch-instructie

Java




// Java Program to implement> // Enum in a Switch Statement> import> java.io.*;> // Driver Class> class> GFG {> >// Enum Declared> >enum> Color {> >RED,> >GREEN,> >BLUE,> >Yellow;> >}> >// Main Function> >public> static> void> main(String[] args)> >{> >Color var_1=Color.Yellow;> > >// Switch case with Enum> >switch>(var_1){> >case> RED:> >System.out.println(>'Red color observed'>);> >break>;> >case> GREEN:> >System.out.println(>'Green color observed'>);> >break>;> >case> BLUE:> >System.out.println(>'Blue color observed'>);> >default>:> >System.out.println(>'Other color observed'>);> >}> >}> }>

>

>

Uitvoer

Other color observed>

Enum en erfenis

  • Alle enums strekken zich impliciet uit java.lang.Enum-klasse . Omdat een klasse alleen maar kan uitbreiden een parent in Java kan een enum niets anders uitbreiden.
  • toString()-methode wordt overschreven java.lang.Enum-klasse , wat de constante naam enum retourneert.
  • enum kan veel interfaces implementeren.

Enum en Constructeur

  • Enum kan een constructor bevatten en deze wordt afzonderlijk uitgevoerd voor elke enum-constante op het moment dat de enum-klasse wordt geladen.
  • We kunnen geen enum-objecten expliciet maken en daarom kunnen we de enum-constructor niet rechtstreeks aanroepen.

Enum en methoden

Enum kan beide bevatten concreet methoden en abstract methoden. Als een enum-klasse een abstracte methode heeft, moet elke instantie van de enum-klasse deze implementeren.

Java




java aaneengeschakelde tekenreeksen

// Java program to demonstrate that enums can have> // constructor and concrete methods.> // An enum (Note enum keyword inplace of class keyword)> enum> Color {> >RED,> >GREEN,> >BLUE;> >// enum constructor called separately for each> >// constant> >private> Color()> >{> >System.out.println(>'Constructor called for : '> >+>this>.toString());> >}> >public> void> colorInfo()> >{> >System.out.println(>'Universal Color'>);> >}> }> public> class> Test {> >// Driver method> >public> static> void> main(String[] args)> >{> >Color c1 = Color.RED;> >System.out.println(c1);> >c1.colorInfo();> >}> }>

>

>

Uitvoer

Constructor called for : RED Constructor called for : GREEN Constructor called for : BLUE RED Universal Color>

Veelgestelde vragen over Enum in Java

Q1. Kunnen we de instantie van Enum maken met het nieuwe trefwoord?

Jaren:

Nee, we kunnen de instantie van het trefwoord Enum niet maken omdat dit alleen privéconstructors bevat.

Vraag 2. Kunnen we een abstracte methode hebben in de Enum?

Jaren:

Ja, we hebben een abstracte methode in Enum.

Q3. Wat is het doel van de methode value() in de enum?

Jaren:

In Java kan de methode value( ) worden gebruikt om alle waarden terug te geven die aanwezig zijn in de enum.

Q4. Wat is het doel van de methode valueOf() in de enum?

Jaren:

De methode valueOf() retourneert de enum-constante van de opgegeven tekenreekswaarde, indien aanwezig.

Vraag 5. Wat is het doel van de ordinale() methode in de enum?

Jaren:

Door de ordinal()-methode te gebruiken, kan elke enum-constante-index worden gevonden, net als een array-index.

Vraag 6. Schrijf een programma in Java om het gebruik van de methoden value(), valueOf() en ordinal() in de enum te beschrijven.

Jaren:

Java




// Java program to demonstrate working of values(),> // ordinal() and valueOf()> enum> Color {> >RED,> >GREEN,> >BLUE;> }> public> class> Test {> >public> static> void> main(String[] args)> >{> >// Calling values()> >Color arr[] = Color.values();> >// enum with loop> >for> (Color col : arr) {> >// Calling ordinal() to find index> >// of color.> >System.out.println(col +>' at index '> >+ col.ordinal());> >}> >// Using valueOf(). Returns an object of> >// Color with given constant.> >// Uncommenting second line causes exception> >// IllegalArgumentException> >System.out.println(Color.valueOf(>'RED'>));> >// System.out.println(Color.valueOf('WHITE'));> >}> }>

>

gekoppelde lijst

>

Uitvoer

RED at index 0 GREEN at index 1 BLUE at index 2 RED>

Volgend artikel over enum: Enum met aangepaste waarde in Java