logo

enumerare în Java

În Java, enumerările (enumările) sunt un tip special folosit pentru a defini un grup de constante numite.

  • Enumerările ajută la menținerea lizibilității și siguranța tipului în programe prin alocarea de nume semnificative valorilor întregi.
  • În principal util atunci când avem un set mic de valori posibile pentru un articol, cum ar fi indicațiile zile ale săptămânii etc.

Crearea unei Enum

Sintaxă:



enumerare EnumName {

cina vs cina

CONSTANT1 CONSTANT2 CONSTANT3;

}



Java
enum TrafficLight {  RED GREEN YELLOW; } public class Test{    public static void main(String[] args){    TrafficLight x = TrafficLight.RED;  System.out.println(x);  } } 

Ieșire
RED 

Declarație de enumerare în Java

Declarația Enum poate fi făcută în afara unei clase sau în interiorul unei clase, dar nu în interiorul unei metode.

1. Declarație în afara clasei

După cum am văzut în exemplul de mai sus, enumerarile pot fi declarate în afara unei clase și accesate direct

versiuni Android

2. Declarație în interiorul unei clase

Enumerările pot fi, de asemenea, declarate în interiorul unei clase, dar nu în interiorul unei metode.



Java
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 

Proprietățile lui Enum în Java

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

  • Tipul clasei: Implementat intern ca o clasă.
  • Constante enumerare: Fiecare constantă este un obiect de tip enum.
  • Suport pentru comutare: Poate fi folosit în declarațiile switch.
  • Modificatori impliciti: Constantele sunt finale statice publice.
  • Moştenire: Enumările nu pot extinde clasele, dar pot implementa interfețe.

Enum într-o declarație Switch

Enumările pot fi folosite în instrucțiunile switch pentru a gestiona diferite cazuri bazate pe constantele enumerare.

Java
import java.io.*; class GFG{    // Enum Declared  enum Color {  RED  GREEN  BLUE  YELLOW;  }  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');  break;  case GREEN:  System.out.println('Green color');  break;  case BLUE:  System.out.println('Blue color');  break;  default:  System.out.println('Other color');  }  } } 

Ieșire
Other color 

Enum cu metode și constructor

Enumerările pot avea constructori și metode executate separat pentru fiecare constantă

Java
enum Color{  RED GREEN BLUE;  private Color(){    System.out.println('Constructor called for: ' + this);  }  public void display(){    System.out.println('Color is: ' + this);  } } public class Test{    public static void main(String[] args){    Color c1 = Color.RED;  c1.display();  } } 

Ieșire
Constructor called for: RED Constructor called for: GREEN Constructor called for: BLUE Color is: RED 

Enum cu metode abstracte

Enumările pot declara metode abstracte pe care fiecare constantă trebuie să le implementeze.

filigran în cuvânt
Java
enum Day{    MONDAY{    public String getNumber(){  return '1st day';     }  }  FRIDAY{    public String getNumber(){  return '5th day';     }  };    public abstract String getNumber(); } public class EnumTest {  public static void main(String[] args){    System.out.println(Day.MONDAY.getNumber());   System.out.println(Day.FRIDAY.getNumber());  } } 

Ieșire
1st day 5th day 

Iterarea enumerarilor folosind values()

Utilizați EnumType.values() pentru a parcurge toate constantele enumerate.

Java
enum Color{  RED GREEN BLUE;   } public class Test{    public static void main(String[] args){    for (Color c : Color.values()){    System.out.println(c);  }  } } 

Ieșire
RED GREEN BLUE 

Enum și EnumSet (iterație de interval specific)

EnumSet.range() permite iterația pe un interval specific de constante de enumerare.

Java
import java.util.EnumSet; public class EnumSetExample{    enum Day{    SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY;     }  public static void main(String[] args){    EnumSet<Day> workDays = EnumSet.range(Day.TUESDAY Day.FRIDAY);  for (Day d : workDays){    System.out.println(d);  }  } } 

Ieșire
TUESDAY WEDNESDAY THURSDAY FRIDAY 

Crearea unei clase cu un membru Enum

Putem combina enumerarea cu clase obișnuite pentru a vă organiza logica programului. O enumerare poate fi o variabilă membru într-o clasă, iar metodele pot efectua acțiuni bazate pe valoarea enumerare.

cout
Java
/*package whatever //do not write package name here */ import java.io.*; enum Day {  MONDAY  TUESDAY  WEDNESDAY  THURSDAY  FRIDAY  SATURDAY  SUNDAY } public class EnumTest {  // Enum member variable  Day day;  // constructor which takes enum value  public EnumTest(Day day) { this.day = day; }  // method to execute action as per enum value  public void tellItLikeItIs()  {  switch (day) {  case MONDAY:  System.out.println('Mondays are tough');  break;  case TUESDAY:  System.out.println('Tuesday are better');  break;  case WEDNESDAY:  System.out.println('Wednesday are okay');  break;  case THURSDAY:  System.out.println('Thursdays are hopeful');  break;  case FRIDAY:  System.out.println('Fridays are exciting');  break;  case SATURDAY:  System.out.println('Saturdays are relaxing');  break;  case SUNDAY:  System.out.println('Sunday are for rest');  break;  default:  System.out.println('Everyday are good');  break;  }  }  public static void main(String[] args)  {  EnumTest firstDay = new EnumTest(Day.MONDAY);  firstDay.tellItLikeItIs();  EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);  thirdDay.tellItLikeItIs();  EnumTest fifthDay = new EnumTest(Day.FRIDAY);  fifthDay.tellItLikeItIs();  EnumTest sixthDay = new EnumTest(Day.SATURDAY);  sixthDay.tellItLikeItIs();  EnumTest seventhDay = new EnumTest(Day.SUNDAY);  seventhDay.tellItLikeItIs();  } } 

Ieșire
Mondays are tough Wednesday are okay Fridays are exciting Saturdays are relaxing Sunday are for rest 

Explicaţie:

  • Clasa EnumTest din codul de mai sus este creată cu un membru de tip Day. Are un constructor care ia Day enum ca argument și îl atribuie.
  • Clasa are metoda tellItLikeItIs() care afișează mesajul pe baza valorii zilei.
  • Metoda principală include obiecte ale EnumTest folosind diferite valori de enumerare Day și apelând metoda tellItLikeItIs() pentru fiecare.

NOTA: Noul cuvânt cheie este folosit deoarece EnumTest este o clasă obișnuită, nu o enumerare, așa că creăm instanțe și transmitem valoarea enum constructorului său.