logo

enum Java nyelven

A Java-ban a felsorolások (enums) egy speciális típus, amelyet elnevezett konstansok csoportjának meghatározására használnak.

  • Az enumok segítik az olvashatóság karbantarthatóságát és a programok típusbiztonságát azáltal, hogy értelmes neveket rendelnek az egész értékekhez.
  • Főleg akkor hasznos, ha van egy kis lehetséges értékkészletünk egy tételhez, például útbaigazítás a hét napjaihoz stb.

Enum létrehozása

Szintaxis:

enum EnumName {



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

Kimenet
RED 

Az enum nyilatkozata Java nyelven

Az Enum deklaráció elvégezhető osztályon kívül vagy osztályon belül, de metóduson belül nem.

1. Nyilatkozat tanórán kívül

Amint a fenti példában láttuk, az enumok deklarálhatók egy osztályon kívül, és közvetlenül elérhetők

2. Nyilatkozat osztályon belül

Az enumok egy osztályon belül is deklarálhatók, de metóduson belül nem.

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

Kimenet
RED 

Az Enum tulajdonságai Java nyelven

Vannak bizonyos tulajdonságok, amelyeket az Enum követ, az alábbiak szerint:

  • Osztály típusa: Belsőleg osztályként valósítva meg.
  • Enum állandók: Minden konstans egy enum típusú objektum.
  • Kapcsoló támogatás: Használható switch utasításokban.
  • Implicit módosítók: A konstansok nyilvános statikus véglegesek.
  • Öröklés: Az Enumok nem bővíthetik ki az osztályokat, de interfészeket képesek megvalósítani.

Enum egy Switch nyilatkozatban

Az enum-ok a switch utasításokban használhatók különböző esetek kezelésére az enum konstansok alapján.

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

Kimenet
Other color 

Enum módszerekkel és konstruktorral

Az enumok konstruktorait és metódusait külön hajtják végre minden konstanshoz

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

Kimenet
Constructor called for: RED Constructor called for: GREEN Constructor called for: BLUE Color is: RED 

Enum absztrakt módszerekkel

Az enumok absztrakt módszereket deklarálhatnak, amelyeket minden konstansnak meg kell valósítania.

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

Kimenet
1st day 5th day 

Sorszámok iterálása értékek() használatával

Használja az EnumType.values()-t az összes enum-konstans közötti ciklushoz.

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

Kimenet
RED GREEN BLUE 

Enum és EnumSet (specifikus tartomány iterációja)

Az EnumSet.range() lehetővé teszi az iterációt az enum állandók meghatározott tartományán.

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

Kimenet
TUESDAY WEDNESDAY THURSDAY FRIDAY 

Osztály létrehozása Enum taggal

Kombinálhatjuk az enumokat a normál órákkal, hogy rendszerezzük a program logikáját. Az enum lehet egy osztály tagváltozója, a metódusok pedig műveleteket hajthatnak végre az enum értéke alapján.

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

Kimenet
Mondays are tough Wednesday are okay Fridays are exciting Saturdays are relaxing Sunday are for rest 

Magyarázat:

  • A fenti kód EnumTest osztálya Day típusú taggal jön létre. Konstruktora van, amely a Day enum-ot veszi argumentumnak, és hozzárendeli.
  • Az osztály rendelkezik a tellItLikeItIs() metódussal, amely a nap értéke alapján nyomtat üzenetet.
  • A fő metódus az EnumTest objektumaiból áll, amelyek különböző Day enum értékeket használnak, és mindegyiken meghívják a tellItLikeItIs() metódust.

JEGYZET: Az új kulcsszót azért használjuk, mert az EnumTest egy normál osztály, nem pedig enum, ezért példányokat hozunk létre, és az enum értéket adjuk át a konstruktorának.


összeadó teljes összeadó