logo

Enumerări Java

The Enum în Java este un tip de date care conține un set fix de constante.

Poate fi folosit pentru zilele săptămânii (DUMINICĂ, LUNI, MARȚI, MIERCURI, JOI, VINERI și SÂMBĂTĂ), direcții (NORD, SUD, EST și VEST), sezon (PRIVĂVARA, VARA, IARNA și TOAMNA sau TOAMNA) ), culori (ROȘU, GALBEN, ALBASTRU, VERDE, ALB și NEGRU) etc. Conform convențiilor de denumire Java, ar trebui să avem toate constantele cu majuscule. Deci, avem constante enumerate cu majuscule.

Enumerările Java pot fi considerate ca clase care au un set fix de constante (o variabilă care nu se modifică). Constantele de enumerare Java sunt statice și implicit implicit. Este disponibil începând cu JDK 1.5.

long to int java

Enumerările sunt folosite pentru a crea propriul nostru tip de date, cum ar fi clasele. The enumerare tipul de date (cunoscut și ca tip de date enumerate) este folosit pentru a defini o enumerare în Java. Spre deosebire de C/C++, enumerarea în Java este mai mult puternic . Aici, putem defini o enumerare fie în interiorul clasei, fie în afara clasei.

Java Enum moștenește intern Clasa Enum , deci nu poate moșteni nicio altă clasă, dar poate implementa multe interfețe. Putem avea câmpuri, constructori, metode și metode principale în enumerarea Java.

Puncte de reținut pentru Java Enum

  • Enum îmbunătățește siguranța tipului
  • Enum poate fi utilizat cu ușurință în comutator
  • Enum poate fi parcurs
  • Enum poate avea câmpuri, constructori și metode
  • Enum poate implementa multe interfețe, dar nu poate extinde nicio clasă, deoarece extinde intern clasa Enum
Java Enum Points

Exemplu simplu de enumerare Java

 class EnumExample1{ //defining the enum inside the class public enum Season { WINTER, SPRING, SUMMER, FALL } //main method public static void main(String[] args) { //traversing the enum for (Season s : Season.values()) System.out.println(s); }} 
Testează-l acum

Ieșire:

 WINTER SPRING SUMMER FALL 

Să vedem un alt exemplu de enumerare Java în care folosim metodele value(), valueOf() și ordinal() ale enumerarii Java.

 class EnumExample1{ //defining enum within class public enum Season { WINTER, SPRING, SUMMER, FALL } //creating the main method public static void main(String[] args) { //printing all enum for (Season s : Season.values()){ System.out.println(s); } System.out.println('Value of WINTER is: '+Season.valueOf('WINTER')); System.out.println('Index of WINTER is: '+Season.valueOf('WINTER').ordinal()); System.out.println('Index of SUMMER is: '+Season.valueOf('SUMMER').ordinal()); }} 

Ieșire:

 WINTER SPRING SUMMER FALL Value of WINTER is: WINTER Index of WINTER is: 0 Index of SUMMER is: 2 

Notă: compilatorul Java adaugă în mod intern metodele value(), valueOf() și ordinal() în cadrul enumerarii la momentul compilării. Acesta creează intern o clasă statică și finală pentru enumerare.

Care este scopul metodei values() din enumerare?

Compilatorul Java adaugă intern metoda values() atunci când creează o enumerare. Metoda values() returnează o matrice care conține toate valorile enumerarii.

Care este scopul metodei valueOf() din enumerare?

Compilatorul Java adaugă intern metoda valueOf() atunci când creează o enumerare. Metoda valueOf() returnează valoarea constantei enumerate date.

Care este scopul metodei ordinal() din enumerare?

Compilatorul Java adaugă intern metoda ordinal() atunci când creează o enumerare. Metoda ordinal() returnează indexul valorii enumerate.


Definirea Java Enum

Enumerația poate fi definită în interiorul sau în afara clasei, deoarece este similară cu o clasă. Punctul și virgulă (;) de la sfârșitul constantelor enumerate sunt opționale. De exemplu:

java conversia întregului în șir
 enum Season { WINTER, SPRING, SUMMER, FALL } 

Sau,

 enum Season { WINTER, SPRING, SUMMER, FALL; } 

Ambele definiții ale enumerarii Java sunt aceleași.

Exemplu de enumerare Java: definit în afara clasei

 enum Season { WINTER, SPRING, SUMMER, FALL } class EnumExample2{ public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); }} 
Testează-l acum

Ieșire:

 WINTER 

Exemplu de enumerare Java: definit în interiorul clasei

 class EnumExample3{ enum Season { WINTER, SPRING, SUMMER, FALL; }//semicolon(;) is optional here public static void main(String[] args) { Season s=Season.WINTER;//enum type is required to access WINTER System.out.println(s); }} 
Testează-l acum

Ieșire:

 WINTER 

Java Enum Exemplu: metoda principală din Enum

Dacă puneți metoda main() în interiorul enumerației, puteți rula enumerarea direct.

 enum Season { WINTER, SPRING, SUMMER, FALL; public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); } } 

Ieșire:

 WINTER 

Inițializarea unor valori specifice la constantele enumerare

Constantele enumerare au o valoare inițială care începe de la 0, 1, 2, 3 și așa mai departe. Dar, putem inițializa valoarea specifică la constantele enumerare prin definirea câmpurilor și a constructorilor. După cum s-a specificat mai devreme, Enum poate avea câmpuri, constructori și metode.

Exemplu de specificare a valorii inițiale la constantele enumerate

 class EnumExample4{ enum Season{ WINTER(5), SPRING(10), SUMMER(15), FALL(20); private int value; private Season(int value){ this.value=value; } } public static void main(String args[]){ for (Season s : Season.values()) System.out.println(s+' '+s.value); }} 
Testează-l acum

Ieșire:

 WINTER 5 SPRING 10 SUMMER 15 FALL 20 

Constructorul de tip enum este privat. Dacă nu declarați compilatorul privat, se creează intern un constructor privat.

 enum Season{ WINTER(10),SUMMER(20); private int value; Season(int value){ this.value=value; } } 

Cod intern generat de compilator pentru exemplul de mai sus de tip enum

 final class Season extends Enum { public static Season[] values() { return (Season[])$VALUES.clone(); } public static Season valueOf(String s) { return (Season)Enum.valueOf(Season, s); } private Season(String s, int i, int j) { super(s, i); value = j; } public static final Season WINTER; public static final Season SUMMER; private int value; private static final Season $VALUES[]; static { WINTER = new Season('WINTER', 0, 10); SUMMER = new Season('SUMMER', 1, 20); $VALUES = (new Season[] { WINTER, SUMMER }); } } 

Putem crea instanța Enum cu un cuvânt cheie nou?

Nu, deoarece conține numai constructori privați.

Putem avea o metodă abstractă în Enum?

Da, desigur! putem avea metode abstracte și putem asigura implementarea acestor metode.


Java Enum într-o instrucțiune switch

Putem aplica instrucțiunea enumerare la switch ca în exemplul dat:

comenzi git pentru push

Exemplu de aplicare a Enum pe o instrucțiune switch

 class EnumExample5{ enum Day{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public static void main(String args[]){ Day day=Day.MONDAY; switch(day){ case SUNDAY: System.out.println('sunday'); break; case MONDAY: System.out.println('monday'); break; default: System.out.println('other day'); } }} 
Testează-l acum

Ieșire:

 monday