I Java, Enumerations eller Java Enum tjene formålet med å representere en gruppe navngitte konstanter i et programmeringsspråk. Java Enums brukes når vi kjenner alle mulige verdier på kompileringstidspunktet, for eksempel valg på en meny, avrundingsmoduser, kommandolinjeflagg osv. Settet med konstanter i en enum-type trenger ikke være fast for alltid.
Hva er Enumeration eller Enum i Java?
En Java-oppregning er en klassetype. Selv om vi ikke trenger å instansiere en enum ved å bruke ny, den har de samme egenskapene som andre klasser. Dette faktum gjør Java-oppregning til et veldig kraftig verktøy. Akkurat som klasser kan du gi dem konstruktører, legge til instansvariabler og metoder, og til og med implementere grensesnitt.
Enum Eksempel:
De 4 fargene i en kortstokk kan være 4 tellere som heter Klubb, Ruter, Hjerte og Spade, som tilhører en oppregnet type som heter Suit. Andre eksempler inkluderer naturlige oppregnede typer (som planetene, ukedager, farger, veibeskrivelser osv.).
En ting å huske på er at, i motsetning til klasser, arver oppregninger verken andre klasser eller kan utvides (dvs. bli superklasse). Vi kan også legge til variabler, metoder og konstruktører til den. Hovedmålet med en enum er å definere våre egne datatyper (Enumerated Data Types).
Erklæring om enum i Java
Enum-erklæring kan gjøres utenfor en klasse eller inne i en klasse, men ikke innenfor en metode.
1. Erklæring utenfor 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);> >}> }> |
>
>Produksjon
RED>
2. Erklæring i en klasse
Java
shilpa shetty
// 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);> >}> }> |
>
>Produksjon
RED>
- Den første linjen inne i enumet skal være en liste over konstanter og deretter andre ting som metoder, variabler og konstruktører.
- I følge Java-navnekonvensjoner , anbefales det at vi navngir konstant med alle store bokstaver
Egenskaper til Enum i Java
Det er visse egenskaper etterfulgt av Enum som nevnt nedenfor:
- Hver enum implementeres internt ved å bruke Class.
- Hver enum-konstant representerer en gjenstand av type enum.
- Enum-type kan sendes som argument til bytte om uttalelser.
- Hver enum-konstant er alltid implisitt offentlig statisk finale . Siden det er statisk , kan vi få tilgang til det ved å bruke enum Name. Siden det er endelig , vi kan ikke lage barneopptegnelser.
- Vi kan erklære main()-metoden inne i enumet. Derfor kan vi påkalle enum direkte fra ledeteksten.
Nedenfor er implementeringen av egenskapene ovenfor:
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();> >}> }> |
>
>
ipconfig for ubuntuProduksjon
Mondays are bad.>
Java Enum-programmer
1. Hovedfunksjon inne i Enum
Vi kan deklarere en hovedfunksjon inne i en enum da vi kan påkalle enum direkte fra ledeteksten.
Nedenfor er implementeringen av egenskapen ovenfor:
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);> >}> }> |
>
>Produksjon
RED>
2. Sløyfe gjennom Enum
Vi kan iterere over Enum ved å bruke verdier ( ) og loop. values()-funksjonen returnerer en rekke Enum-verdier som konstanter som vi kan iterere over verdiene.
Nedenfor er implementeringen av loopen gjennom 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);> >}> >}> }> |
>
>Produksjon
RED GREEN BLUE>
3. Oppgi en brytererklæring
Java
samlinger 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'>);> >}> >}> }> |
>
>Produksjon
Other color observed>
Enum og Arv
- Alle opptegnelser utvider seg implisitt java.lang.Enum klasse . Som en klasse kan bare forlenge en foreldre i Java, kan ikke en enum utvide noe annet.
- toString()-metoden er overstyrt i java.lang.Enum klasse , som returnerer enum konstant navn.
- enum kan implementere mange grensesnitt.
Enum og konstruktør
- Enum kan inneholde en konstruktør og den utføres separat for hver enum-konstant på tidspunktet for enum-klassen lastes.
- Vi kan ikke opprette enum-objekter eksplisitt, og derfor kan vi ikke påkalle enum-konstruktøren direkte.
Enum og metoder
Enum kan inneholde begge deler betong metoder og abstrakt metoder. Hvis en enum-klasse har en abstrakt metode, må hver forekomst av enum-klassen implementere 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();> >}> }> |
>
>Produksjon
Constructor called for : RED Constructor called for : GREEN Constructor called for : BLUE RED Universal Color>
Vanlige spørsmål om Enum i Java
Q1. Kan vi opprette forekomsten av Enum med det nye nøkkelordet?
År:
Nei, vi kan ikke opprette forekomsten av Enum-nøkkelordet fordi det kun inneholder private konstruktører.
Q2. Kan vi ha en abstrakt metode i Enum?
År:
Ja, vi har en abstrakt metode i Enum.
Q3. Hva er hensikten med values()-metoden i enum?
År:
I Java kan verdier( )-metoden brukes til å returnere alle verdier som er tilstede inne i enum.
Q4. Hva er hensikten med valueOf()-metoden i enum?
År:
VerdiOf()-metoden returnerer enum-konstanten til den angitte strengverdien hvis den finnes.
Q5. Hva er hensikten med ordinal()-metoden i enum?
År:
Ved å bruke ordinal()-metoden kan hver enum-konstantindeks bli funnet, akkurat som en matriseindeks.
Q6. Skriv et program i Java for å beskrive bruken av values(), valueOf(), og ordinal()-metoder i enum.
År:
ProduksjonJava
// 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'));>>}>}>>solfylt deol alder>
RED at index 0 GREEN at index 1 BLUE at index 2 RED>
Neste artikkel om enum: Enum med tilpasset verdi i Java