logo

енум у Јави

У Јави енумерације (енумс) су посебан тип који се користи за дефинисање групе именованих константи.

  • Енумови помажу у читљивости одржавања и сигурности типова у програмима додељивањем смислених имена целобројним вредностима.
  • Углавном корисно када имамо мали скуп могућих вредности за ставку као што су упутства за дане у недељи итд.

Креирање енума

Синтакса:



енум ЕнумНаме {

ЦОНСТАНТ1 ЦОНСТАНТ2 ЦОНСТАНТ3;

}



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

Излаз
RED 

Декларација енума у ​​Јави

Декларација енума може да се уради ван класе или унутар класе, али не и унутар методе.

цео број у низ

1. Декларација ван часа

Као што смо видели у горњем примеру, енуме се могу декларисати ван класе и приступити им директно

покушајте да ухватите Јава

2. Декларација унутар класе

Енумови се такође могу декларисати унутар класе, али не и унутар методе.



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

Излаз
RED 

Својства Енума у ​​Јави

Постоје одређена својства иза којих следи Енум као што је наведено у наставку:

  • Тип класе: Интерно имплементиран као класа.
  • Енум константе: Свака константа је објекат типа енум.
  • Подршка за пребацивање: Може се користити у наредбама свитцх.
  • Имплицитни модификатори: Константе су јавне статичке коначне.
  • наследство: Енумс не може проширити класе, али може имплементирати интерфејсе.

Енум у наредби Свитцх

Енумови се могу користити у наредбама свитцх за руковање различитим случајевима на основу енум константи.

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

Излаз
Other color 

Енум са методама и конструктором

Енумови могу имати конструкторе и методе које се извршавају засебно за сваку константу

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

Излаз
Constructor called for: RED Constructor called for: GREEN Constructor called for: BLUE Color is: RED 

Енум са апстрактним методама

Енумови могу декларисати апстрактне методе које свака константа мора имплементирати.

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

Излаз
1st day 5th day 

Понављање енума користећи вредности()

Користите ЕнумТипе.валуес() за петљу кроз све енум константе.

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

Излаз
RED GREEN BLUE 

Енум и ЕнумСет (итерација специфичног опсега)

ЕнумСет.ранге() дозвољава итерацију преко одређеног опсега енум константи.

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

Излаз
TUESDAY WEDNESDAY THURSDAY FRIDAY 

Креирање класе са Енум чланом

Можемо комбиновати енуме са редовним часовима да организујемо логику вашег програма. Енум може бити променљива-члан у класи и методе могу да извршавају радње на основу вредности енума.

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

Излаз
Mondays are tough Wednesday are okay Fridays are exciting Saturdays are relaxing Sunday are for rest 

Објашњење:

  • Класа ЕнумТест у горњем коду је креирана са чланом типа Даи. Има конструктор који узима Даи енум као аргумент и додељује га.
  • Класа има метод теллИтЛикеИтИс() који штампа поруку на основу вредности дана.
  • Главни метод укључује објекте ЕнумТест-а користећи различите вредности Даи енума и позивајући метод теллИтЛикеИтИс() за сваки.

НАПОМЕНА: Нова кључна реч се користи зато што је ЕнумТест обична класа, а не енум, па креирамо инстанце и прослеђујемо вредност набрајања њеном конструктору.

шта је регек јава