У Јави енумерације (енумс) су посебан тип који се користи за дефинисање групе именованих константи.
- Енумови помажу у читљивости одржавања и сигурности типова у програмима додељивањем смислених имена целобројним вредностима.
- Углавном корисно када имамо мали скуп могућих вредности за ставку као што су упутства за дане у недељи итд.
Креирање енума
Синтакса:
Javaенум ЕнумНаме {
ЦОНСТАНТ1 ЦОНСТАНТ2 ЦОНСТАНТ3;
}
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
Својства Енума у Јави
Постоје одређена својства иза којих следи Енум као што је наведено у наставку:
- Тип класе: Интерно имплементиран као класа.
- Енум константе: Свака константа је објекат типа енум.
- Подршка за пребацивање: Може се користити у наредбама свитцх.
- Имплицитни модификатори: Константе су јавне статичке коначне.
- наследство: Енумс не може проширити класе, али може имплементирати интерфејсе.
Енум у наредби Свитцх
Енумови се могу користити у наредбама свитцх за руковање различитим случајевима на основу енум константи.
Javaimport 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
Енум са методама и конструктором
Енумови могу имати конструкторе и методе које се извршавају засебно за сваку константу
Javaenum 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
Енум са апстрактним методама
Енумови могу декларисати апстрактне методе које свака константа мора имплементирати.
Javaenum 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
Понављање енума користећи вредности()
Користите ЕнумТипе.валуес() за петљу кроз све енум константе.
Javaenum 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
Енум и ЕнумСет (итерација специфичног опсега)
ЕнумСет.ранге() дозвољава итерацију преко одређеног опсега енум константи.
Javaimport 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
Објашњење:
- Класа ЕнумТест у горњем коду је креирана са чланом типа Даи. Има конструктор који узима Даи енум као аргумент и додељује га.
- Класа има метод теллИтЛикеИтИс() који штампа поруку на основу вредности дана.
- Главни метод укључује објекте ЕнумТест-а користећи различите вредности Даи енума и позивајући метод теллИтЛикеИтИс() за сваки.
НАПОМЕНА: Нова кључна реч се користи зато што је ЕнумТест обична класа, а не енум, па креирамо инстанце и прослеђујемо вредност набрајања њеном конструктору.
шта је регек јава