logo

enum Java kalba

Java kalboje sąrašai (enums) yra specialus tipas, naudojamas apibrėžti pavadintų konstantų grupę.

  • Skaičių reikšmėms priskirdami prasmingus pavadinimus, padeda išlaikyti skaitomumą ir saugoti programų tipą.
  • Daugiausia naudinga, kai turime nedidelį galimų elemento verčių rinkinį, pvz., nuorodų savaitės dienas ir pan.

Enum kūrimas

Sintaksė:



enum EnumName {

CONSTANT1 CONSTANT2 CONSTANT3;

}



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

Išvestis
RED 

Enum deklaracija Java kalba

Enum deklaravimas gali būti atliktas klasėje arba klasėje, bet ne metodo viduje.

1. Deklaracija ne klasėje

Kaip matėme aukščiau esančiame pavyzdyje, sąrašus galima deklaruoti už klasės ribų ir pasiekti tiesiogiai

2. Deklaracija klasės viduje

Enums taip pat galima deklaruoti klasėje, bet ne metodo viduje.



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

Išvestis
RED 

„Enum“ savybės „Java“.

Yra tam tikros savybės, po kurių nurodomas Enum, kaip nurodyta toliau:

  • Klasės tipas: Viduje įdiegta kaip klasė.
  • Enum konstantos: Kiekviena konstanta yra enum tipo objektas.
  • Perjungimo palaikymas: Gali būti naudojamas perjungimo teiginiuose.
  • Netiesioginiai modifikatoriai: Konstantos yra viešos statinės galutinės.
  • Paveldėjimas: Enums negali išplėsti klasių, bet gali įdiegti sąsajas.

Enum perjungimo pareiškime

Enums galima naudoti perjungimo sakiniuose, kad būtų galima tvarkyti įvairius atvejus, remiantis enum konstantomis.

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

Išvestis
Other color 

Enum su metodais ir konstruktoriumi

Enums gali turėti konstruktorius ir metodus, vykdomus atskirai kiekvienai konstantai

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

Išvestis
Constructor called for: RED Constructor called for: GREEN Constructor called for: BLUE Color is: RED 

Enum su abstrakčiais metodais

Enums gali deklaruoti abstrakčius metodus, kuriuos turi įgyvendinti kiekviena konstanta.

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

Išvestis
1st day 5th day 

Eilių kartojimas naudojant reikšmes ()

Naudokite EnumType.values(), kad peržiūrėtumėte visas enum konstantas.

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

Išvestis
RED GREEN BLUE 

Enum ir EnumSet (specifinio diapazono iteracija)

EnumSet.range() leidžia kartoti tam tikrą enum konstantų diapazoną.

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

Išvestis
TUESDAY WEDNESDAY THURSDAY FRIDAY 

Klasės su Enum nariu kūrimas

Mes galime derinti enumus su įprastomis pamokomis, kad sutvarkytume jūsų programos logiką. Enum gali būti narys klasės kintamasis, o metodai gali atlikti veiksmus, pagrįstus enum reikšme.

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

Išvestis
Mondays are tough Wednesday are okay Fridays are exciting Saturdays are relaxing Sunday are for rest 

Paaiškinimas:

  • Aukščiau pateiktame kode EnumTest klasė sukurta su Day tipo nariu. Jis turi konstruktorių, kuris paima Day enum kaip argumentą ir jį priskiria.
  • Klasė turi metodą tellItLikeItIs(), kuris spausdina pranešimą pagal dienos vertę.
  • Pagrindinis metodas apima EnumTest objektus, naudojant skirtingas Day enum reikšmes ir kiekviename iškviečiant tellItLikeItIs() metodą.

PASTABA: Naujas raktinis žodis naudojamas, nes EnumTest yra įprasta klasė, o ne enum, todėl mes sukuriame egzempliorius ir perduodame enum reikšmę jos konstruktoriui.