I Java, Uppräkningar eller Java Enum tjäna syftet att representera en grupp av namngivna konstanter i ett programmeringsspråk. Java Enums används när vi känner till alla möjliga värden vid kompileringstillfället, såsom val på en meny, avrundningslägen, kommandoradsflaggor, etc. Uppsättningen konstanter i en uppräkningstyp behöver inte förbli fast för alltid.
Vad är Enumeration eller Enum i Java?
En Java-uppräkning är en klasstyp. Även om vi inte behöver instansiera en uppräkning med hjälp av ny, den har samma möjligheter som andra klasser. Detta faktum gör Java-uppräkning till ett mycket kraftfullt verktyg. Precis som klasser kan du ge dem konstruktörer, lägga till instansvariabler och metoder och till och med implementera gränssnitt.
Enum Exempel:
De 4 färgerna i en kortlek kan vara 4 uppräknare som heter Club, Diamond, Heart och Spade, tillhörande en uppräknad typ som heter Suit. Andra exempel inkluderar naturliga uppräknade typer (som planeterna, veckodagar, färger, riktningar, etc.).
En sak att tänka på är att, till skillnad från klasser, uppräkningar varken ärver andra klasser eller kan förlängas (dvs. blir superklass). Vi kan också lägga till variabler, metoder och konstruktorer till den. Huvudsyftet med en enum är att definiera våra egna datatyper (Enumerated Data Types).
Enumförklaring i Java
Enum-deklaration kan göras utanför en klass eller inuti en klass men inte inom en metod.
1. Deklaration utanför klassen
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);> > }> }> |
>
>Produktion
RED>
2. Deklaration i en klass
Java
vilka månader är q1
// 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);> > }> }> |
>
>Produktion
RED>
- Den första raden inuti enumet bör vara en lista med konstanter och sedan andra saker som metoder, variabler och konstruktorer.
- Enligt Java-namnkonventioner , rekommenderas att vi namnger konstant med alla stora bokstäver
Egenskaper för Enum i Java
Det finns vissa egenskaper följt av Enum som nämns nedan:
- Varje enum implementeras internt genom att använda Class.
- Varje enumkonstant representerar en objekt av typ enum.
- Enum-typ kan skickas som ett argument till växla uttalanden.
- Varje enumkonstant är alltid implicit offentlig statisk final . Eftersom det är statisk , kan vi komma åt det genom att använda enum Name. Eftersom det är slutlig , vi kan inte skapa underordnade uppräkningar.
- Vi kan deklarera main() metod inuti enumen. Därför kan vi anropa enum direkt från kommandotolken.
Nedan är implementeringen av ovanstående egenskaper:
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();> > }> }> |
>
>
skriva ut stjärnmönsterProduktion
Mondays are bad.>
Java Enum-program
1. Huvudfunktion inuti Enum
Vi kan deklarera en huvudfunktion i en enum eftersom vi kan anropa enum direkt från kommandotolken.
Nedan är implementeringen av ovanstående egenskap:
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);> > }> }> |
>
>Produktion
RED>
2. Gå igenom Enum
Vi kan iterera över Enum med värden( ) och loop. values()-funktionen returnerar en array av Enum-värden som konstanter med hjälp av vilka vi kan iterera över värdena.
Nedan är implementeringen av loopen genom 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);> > }> > }> }> |
>
>Produktion
str till int
RED GREEN BLUE>
3. Räkna upp i ett Switch Statement
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'> );> > }> > }> }> |
>
>Produktion
Other color observed>
Enum och Arv
- Alla uppräkningar sträcker sig implicit java.lang.Enum-klass . Som en klass kan bara förlänga ett förälder i Java kan en enum inte utöka något annat.
- toString()-metoden åsidosätts i java.lang.Enum-klass , som returnerar enum konstant namn.
- enum kan implementera många gränssnitt.
Enum och konstruktör
- Enum kan innehålla en konstruktor och den exekveras separat för varje enumkonstant vid tidpunkten för enum-klassens laddning.
- Vi kan inte skapa enum-objekt explicit och därför kan vi inte anropa enum-konstruktorn direkt.
Enum och metoder
Enum kan innehålla båda betong metoder och abstrakt metoder. Om en enum-klass har en abstrakt metod, måste varje instans av enum-klassen implementera den.
Java
// 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();> > }> }> |
>
>Produktion
Constructor called for : RED Constructor called for : GREEN Constructor called for : BLUE RED Universal Color>
Vanliga frågor om Enum i Java
Q1. Kan vi skapa instansen av Enum med det nya nyckelordet?
År:
Nej, vi kan inte skapa instansen av nyckelordet Enum eftersom det endast innehåller privata konstruktörer.
Q2. Kan vi ha en abstrakt metod i Enum?
År:
Ja, vi har en abstrakt metod i Enum.
Q3. Vad är syftet med values()-metoden i enumet?
År:
I Java kan metoden values( ) användas för att returnera alla värden som finns inuti enum.
Q4. Vad är syftet med valueOf()-metoden i enum?
År:
Metoden valueOf() returnerar enum-konstanten för det angivna strängvärdet om det finns.
F5. Vad är syftet med metoden ordinal() i enumet?
År:
Genom att använda metoden ordinal() kan varje enum-konstantindex hittas, precis som ett arrayindex.
F6. Skriv ett program i Java för att beskriva användningen av metoderna values(), valueOf() och ordinal() i enumet.
År:
ProduktionJava
// 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'));>
>
}>
}>
>linux byta namn på katalogen>
RED at index 0 GREEN at index 1 BLUE at index 2 RED>
Nästa artikel om enum: Enum med anpassat värde i Java