logo

enum i Java

I Java, Enumerations eller Java Enum tjener det formål at repræsentere en gruppe af navngivne konstanter i et programmeringssprog. Java Enums bruges, når vi kender alle mulige værdier på kompileringstidspunktet, såsom valg på en menu, afrundingstilstande, kommandolinjeflag osv. Sættet af konstanter i en enum-type behøver ikke at forblive fast for altid.

Hvad er Enumeration eller Enum i Java?

En Java-opregning er en klassetype. Selvom vi ikke behøver at instantiere en enum vha ny, den har de samme muligheder som andre klasser. Denne kendsgerning gør Java-optælling til et meget kraftfuldt værktøj. Ligesom klasser kan du give dem konstruktører, tilføje instansvariabler og -metoder og endda implementere grænseflader.

Enum eksempel:

De 4 farver i et sæt spillekort kan være 4 tællere ved navn Kølle, Diamant, Hjerte og Spade, der tilhører en opregnet type ved navn Suit. Andre eksempler omfatter naturlige opregnede typer (som planeterne, ugedage, farver, retninger osv.).



En ting at huske på er, at i modsætning til klasser, arver optællinger hverken andre klasser eller kan udvides (dvs. blive superklasse). Vi kan også tilføje variabler, metoder og konstruktører til det. Hovedformålet med en enum er at definere vores egne datatyper (Enumerated Data Types).

Erklæring om enum i Java

Enum-deklaration kan udføres uden for en klasse eller inde i en klasse, men ikke inden for en metode.

1. Erklæring uden for 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. Erklæring inde 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);> >}> }>

>

>

Produktion

RED>
  • Den første linje inde i enumet skal være en liste over konstanter og derefter andre ting som metoder, variabler og konstruktører.
  • Ifølge Java navngivningskonventioner , anbefales det, at vi navngiver konstant med alle store bogstaver

Egenskaber for Enum i Java

Der er visse egenskaber efterfulgt af Enum som nævnt nedenfor:

  • Hver enum er internt implementeret ved at bruge Class.
  • Hver enum-konstant repræsenterer en objekt af typen enum.
  • Enum-type kan sendes som argument til kontakt udsagn.
  • Hver enum-konstant er altid implicit offentlig statisk finale . Siden er det statisk , kan vi få adgang til det ved at bruge enum Name. Siden er det endelig , vi kan ikke oprette underordnede optegnelser.
  • Vi kan erklære main() metode inde i enummet. Derfor kan vi kalde enum direkte fra kommandoprompten.

Nedenfor er implementeringen af ​​ovenstående egenskaber:

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 til ubuntu
Produktion

Mondays are bad.>

Java Enum programmer

1. Hovedfunktion Inde i Enum

Vi kan erklære en hovedfunktion inde i en enum, da vi kan kalde enum direkte fra kommandoprompten.

Nedenfor er implementeringen af ​​ovenstående ejendom:

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. Løb gennem Enum

Vi kan iterere over Enum ved hjælp af værdier ( ) og loop. values()-funktionen returnerer en matrix af Enum-værdier som konstanter, hvorved vi kan iterere over værdierne.

Nedenfor er implementeringen af ​​løkken gennem 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

RED GREEN BLUE>

3. Enum i en Switch Statement

Java




liste på 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 og Arv

  • Alle optegnelser udvider sig implicit java.lang.Enum klasse . Som en klasse kan kun forlænge en forælder i Java, kan en enum ikke udvide noget andet.
  • toString() metode er tilsidesat i java.lang.Enum klasse , som returnerer enum konstant navn.
  • enum kan implementere mange grænseflader.

Enum og konstruktør

  • Enum kan indeholde en konstruktør, og den udføres separat for hver enum-konstant på tidspunktet for enum-klassens indlæsning.
  • Vi kan ikke oprette enum-objekter eksplicit, og vi kan derfor ikke påberåbe enum-konstruktøren direkte.

Enum og metoder

Enum kan indeholde begge dele beton metoder og abstrakt metoder. Hvis en enum-klasse har en abstrakt metode, skal hver forekomst af 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();> >}> }>

>

>

Produktion

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

Ofte stillede spørgsmål om Enum i Java

Q1. Kan vi oprette forekomsten af ​​Enum med det nye søgeord?

Flere år:

Nej, vi kan ikke oprette forekomsten af ​​søgeordet Enum, fordi det kun indeholder private konstruktører.

Q2. Kan vi have en abstrakt metode i Enum?

Flere år:

Ja, vi har en abstrakt metode i Enum.

Q3. Hvad er formålet med values()-metoden i enum?

Flere år:

I Java kan værdien( )-metoden bruges til at returnere alle værdier, der findes inde i enum.

Q4. Hvad er formålet med valueOf()-metoden i enum?

Flere år:

Metoden valueOf() returnerer enum-konstanten for den angivne strengværdi, hvis den findes.

Q5. Hvad er formålet med ordinal() metoden i enum?

Flere år:

Ved at bruge metoden ordinal() kan hvert enum-konstantindeks findes, ligesom et matrixindeks.

Q6. Skriv et program i Java til at beskrive brugen af ​​værdier(), værdiOf() og ordinal() metoder i enum.

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

>

solrig deol alder

>

Produktion

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

Næste artikel om enum: Enum med tilpasset værdi i Java