logo

opsomming op Java

In Java zijn opsommingen (enums) een speciaal type dat wordt gebruikt om een ​​groep benoemde constanten te definiëren.

  • Enums helpen bij de leesbaarheid, onderhoudbaarheid en typeveiligheid in programma's door betekenisvolle namen toe te wijzen aan gehele waarden.
  • Dit is vooral handig als we een kleine set mogelijke waarden hebben voor een item zoals routebeschrijving, dagen van de week, enz.

Een Enum maken

Syntaxis:



enum EnumNaam {

relationele algebra in rdbms

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

Uitvoer
RED 

Verklaring van enum in Java

Enum-declaratie kan buiten een klasse of binnen een klasse worden gedaan, maar niet binnen een methode.

1. Verklaring buiten de les

Zoals we in het bovenstaande voorbeeld hebben gezien, kunnen enums buiten een klasse worden gedeclareerd en rechtstreeks worden benaderd

2. Verklaring binnen een klas

Enums kunnen ook binnen een klasse worden gedeclareerd, maar niet binnen een methode.



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

Uitvoer
RED 

Eigenschappen van Enum op Java

Er zijn bepaalde eigenschappen gevolgd door Enum, zoals hieronder vermeld:

  • Klassetype: Intern geïmplementeerd als klasse.
  • Enum-constanten: Elke constante is een object van het type enum.
  • Ondersteuning voor schakelaars: Kan worden gebruikt in switch-instructies.
  • Impliciete modificatoren: Constanten zijn openbare statische finale.
  • Erfenis: Enums kunnen geen klassen uitbreiden, maar kunnen wel interfaces implementeren.

Opsomming in een Switch-instructie

Enums kunnen in switch-instructies worden gebruikt om verschillende cases af te handelen op basis van de enum-constanten.

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

Uitvoer
Other color 

Enum met methoden en constructor

Bij enums kunnen constructors en methoden voor elke constante afzonderlijk worden uitgevoerd

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

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

Enum met abstracte methoden

Enums kunnen abstracte methoden declareren die elke constante moet implementeren.

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

Uitvoer
1st day 5th day 

Enums herhalen met waarden()

Gebruik EnumType.values() om alle enum-constanten te doorlopen.

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

Uitvoer
RED GREEN BLUE 

Enum en EnumSet (iteratie van specifiek bereik)

EnumSet.range() maakt iteratie over een specifiek bereik van enum-constanten mogelijk.

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

Uitvoer
TUESDAY WEDNESDAY THURSDAY FRIDAY 

Een klas aanmaken met een Enum-lid

We kunnen enums combineren met reguliere klassen om uw programmalogica te organiseren. Een enum kan een lidvariabele in een klasse zijn en methoden kunnen acties uitvoeren op basis van de enumwaarde.

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

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

Uitleg:

Hoe str naar int te converteren
  • De EnumTest-klasse in bovenstaande code is gemaakt met een lid van het type Day. Het heeft een constructor die Day enum als argument neemt en deze toewijst.
  • De klasse heeft de methode tellItLikeItIs() die een bericht afdrukt op basis van de waarde van de dag.
  • De hoofdmethode omvat objecten van EnumTest die verschillende Day-enumwaarden gebruiken en voor elk ervan de tellItLikeItIs()-methode aanroept.

OPMERKING: Het nieuwe sleutelwoord wordt gebruikt omdat EnumTest een gewone klasse is en geen enum, dus we maken instanties en geven de enum-waarde door aan de constructor ervan.