logo

enumerare în Java

În Java, Enumerări sau Java Enum servesc scopului de a reprezenta un grup de constante numite într-un limbaj de programare. Enumerările Java sunt folosite atunci când cunoaștem toate valorile posibile în momentul compilării, cum ar fi opțiunile dintr-un meniu, moduri de rotunjire, steaguri de linie de comandă etc. Setul de constante dintr-un tip de enumerare nu trebuie să rămână fix pentru tot timpul.

Ce este enumerarea sau enumerarea în Java?

O enumerare Java este un tip de clasă. Deși nu trebuie să instanțiem o enumerare folosind nou, are aceleași capacități ca și alte clase. Acest fapt face ca enumerarea Java să fie un instrument foarte puternic. La fel ca clasele, le puteți oferi constructori, adăugați variabile și metode de instanță și chiar implementați interfețe.



Exemplu de enumerare:

Cele 4 costume dintr-un pachet de cărți de joc pot fi 4 enumeratori numiți Club, Diamond, Heart și Spade, aparținând unui tip enumerat numit Suit. Alte exemple includ tipuri naturale enumerate (cum ar fi planetele, zilele săptămânii, culorile, direcțiile etc.).

Un lucru de reținut este că, spre deosebire de clase, enumerațiile nici nu moștenesc alte clase și nici nu pot fi extinse (adică devin superclase). De asemenea, îi putem adăuga variabile, metode și constructori. Obiectivul principal al unei enumerari este de a ne defini propriile tipuri de date (Tipuri de date enumerate).

Declarație de enumerare în Java

Declarația Enum se poate face în afara unei clase sau în interiorul unei clase, dar nu în interiorul unei metode.



1. Declarație în afara clasei

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

>

>

Ieșire

RED>

2. Declarație în interiorul unei clase

Java


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

>

>

Ieșire

RED>
  • Prima linie din interiorul enumerarii ar trebui să fie o listă de constante și apoi alte lucruri precum metode, variabile și constructori.
  • Conform Convenții de denumire Java , se recomandă să numim constanta cu toate majusculele

Proprietățile lui Enum în Java

Există anumite proprietăți urmate de Enum, așa cum este menționat mai jos:

  • Fiecare enumerare este implementată intern prin utilizarea Class.
  • Fiecare constantă de enumerare reprezintă un obiect de tip enum.
  • Tipul Enum poate fi transmis ca argument către intrerupator declarații.
  • Fiecare constantă de enumerare este întotdeauna implicit public static final . De cand este static , îl putem accesa folosind enumerarea Nume. De cand este final , nu putem crea enumerari copii.
  • Putem declara metoda main(). in interiorul enumerarii. Prin urmare, putem invoca enumerarea direct din linia de comandă.

Mai jos este implementarea proprietăților de mai sus:

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

>

>

comenzi kali linux
Ieșire

Mondays are bad.>

Programe Java Enum

1. Funcția principală din Enum

Putem declara o funcție principală în interiorul unei enumerații, deoarece putem invoca enumerarea direct din linia de comandă.

Mai jos este implementarea proprietății de mai sus:

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

>

>

Ieșire

RED>

2. Buclă prin Enum

Putem itera peste Enum folosind valori ( ) și buclă. Funcția values() returnează o matrice de valori Enum ca constante folosind care putem itera peste valori.

Mai jos este implementarea buclei prin 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);> >}> >}> }>

>

>

Ieșire

RED GREEN BLUE>

3. Enum într-o declarație Switch

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

>

>

Ieșire

Other color observed>

Enum și Moștenire

  • Toate enumerarile se extind implicit Clasa java.lang.Enum . Ca o clasă se poate extinde doar unu părinte în Java, o enumerare nu poate extinde nimic altceva.
  • metoda toString(). este suprascris în Clasa java.lang.Enum , care returnează nume constantă enumerare.
  • enum poate implementa multe interfețe.

Enum și Constructor

  • Enum poate conține un constructor și este executat separat pentru fiecare constantă enumerare la momentul încărcării clasei enumerare.
  • Nu putem crea obiecte enumerare în mod explicit și, prin urmare, nu putem invoca direct constructorul enumerare.

Enum și Metode

Enum poate conține ambele beton metode şi abstract metode. Dacă o clasă enum are o metodă abstractă, atunci fiecare instanță a clasei enumerare trebuie să o implementeze.

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

actor govinda

>

>

Ieșire

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

Întrebări frecvente despre Enum în Java

Î1. Putem crea instanța Enum cu noul cuvânt cheie?

Ani:

Nu, nu putem crea instanța cuvântului cheie Enum deoarece conține numai constructori privați.

Q2. Putem avea o metodă abstractă în Enum?

Ani:

Da, avem o metodă abstractă în Enum.

Q3. Care este scopul metodei values() din enumerare?

Ani:

În Java, metoda values( ) poate fi folosită pentru a returna toate valorile prezente în enumerare.

Î4. Care este scopul metodei valueOf() din enumerare?

Ani:

Metoda valueOf() returnează constanta de enumerare a valorii șirului specificat, dacă există.

Î5. Care este scopul metodei ordinal() din enumerare?

Ani:

Folosind metoda ordinal(), fiecare index constant de enumerare poate fi găsit, la fel ca un index de matrice.

Î6. Scrieți un program în Java pentru a descrie utilizarea metodelor values(), valueOf() și ordinal() în enumerare.

Ani:

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

>

aws sns

>

Ieșire

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

Următorul articol despre enumerare: Enum cu valoare personalizată în Java