enum i Java

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




// 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();> > }> }>

Produksjon

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




// 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:

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'));> > }> }>

Produksjon

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

Neste artikkel om enum: Enum med tilpasset verdi i Java