logo

enum Javassa

Javassa luettelot (enums) ovat erityinen tyyppi, jota käytetään määrittelemään ryhmä nimettyjä vakioita.

  • Enumit auttavat ohjelmien luettavuuden ylläpidossa ja tyyppiturvassa antamalla merkityksellisiä nimiä kokonaislukuarvoille.
  • Hyödyllinen lähinnä silloin, kun meillä on pieni joukko mahdollisia arvoja tuotteelle, kuten reittiohjeet viikonpäivät jne.

Enumin luominen

Syntaksi:



enum EnumName {

VAKIO1 VAKIO2 VAKIO3;

perintöohjelma pythonissa

}



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

Lähtö
RED 

Enum-ilmoitus Javassa

Enum-ilmoitus voidaan tehdä luokan ulkopuolella tai luokan sisällä, mutta ei metodin sisällä.

1. Ilmoitus luokan ulkopuolella

Kuten yllä olevassa esimerkissä olemme nähneet, enumeita voidaan ilmoittaa luokan ulkopuolella ja niihin pääsee suoraan

2. Ilmoitus luokan sisällä

Enumeja voidaan ilmoittaa myös luokan sisällä, mutta ei metodin sisällä.



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

Lähtö
RED 

Enumin ominaisuudet Javassa

On tiettyjä ominaisuuksia, joita seuraa Enum, kuten alla mainitaan:

dfs vs bfs
  • Luokan tyyppi: Sisäisesti toteutettu luokkana.
  • Enum-vakiot: Jokainen vakio on enum-tyyppinen objekti.
  • Vaihda tuki: Voidaan käyttää kytkinlauseissa.
  • Implisiittiset muuntajat: Vakiot ovat julkisia staattisia lopullisia.
  • Perintö: Enumit eivät voi laajentaa luokkia, mutta voivat toteuttaa rajapintoja.

Enum Switch-lausunnossa

Enumeja voidaan käyttää kytkinkäskyissä käsittelemään erilaisia ​​tapauksia enum-vakioiden perusteella.

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

Lähtö
Other color 

Enum menetelmillä ja rakentajalla

Enumeissa voi olla konstruktorit ja menetelmät, jotka suoritetaan erikseen kullekin vakiolle

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

Lähtö
Constructor called for: RED Constructor called for: GREEN Constructor called for: BLUE Color is: RED 

Enum abstrakteilla menetelmillä

Enums voi ilmoittaa abstrakteja menetelmiä, jotka jokaisen vakion on toteutettava.

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

Lähtö
1st day 5th day 

Enumeiden iterointi arvoilla()

Käytä EnumType.values()-komentoa kaikkien enum-vakioiden läpikäymiseen.

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

Lähtö
RED GREEN BLUE 

Enum ja EnumSet (erityisen alueen iteraatio)

EnumSet.range() sallii iteroinnin tietyllä enum-vakioiden alueella.

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

Lähtö
TUESDAY WEDNESDAY THURSDAY FRIDAY 

Luokan luominen Enum-jäsenen kanssa

Voimme yhdistää enumeja tavallisiin luokkiin järjestääksemme ohjelmalogiikkasi. Enum voi olla luokan jäsenmuuttuja ja menetelmät voivat suorittaa toimintoja enum-arvon perusteella.

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

Lähtö
Mondays are tough Wednesday are okay Fridays are exciting Saturdays are relaxing Sunday are for rest 

Selitys:

  • Yllä olevan koodin EnumTest-luokka luodaan Day-tyypin jäsenellä. Siinä on konstruktori, joka ottaa Day enum -arvon argumenttina ja määrittää sen.
  • Luokassa on metodi tellItLikeItIs(), joka tulostaa viestin päivän arvon perusteella.
  • Päämenetelmä sisältää EnumTest-objekteja, jotka käyttävät eri Day enum -arvoja ja kutsuvat tellItLikeItIs() -metodia jokaisessa.

HUOMAA: Uutta avainsanaa käytetään, koska EnumTest on tavallinen luokka, ei enum, joten luomme esiintymiä ja välitämme enum-arvon sen rakentajalle.

.06 murto-osana