logo

enum em Java

Em Java, enumerações (enums) são um tipo especial usado para definir um grupo de constantes nomeadas.

código cinza
  • Enums ajudam na manutenção da legibilidade e na segurança de tipo em programas, atribuindo nomes significativos a valores inteiros.
  • Útil principalmente quando temos um pequeno conjunto de valores possíveis para um item, como direções, dias da semana, etc.

Criando um Enum

Sintaxe:



enum NomeEnum {

CONSTANTE1 CONSTANTE2 CONSTANTE3;

}



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

Saída
RED 

Declaração de enum em Java

A declaração de enum pode ser feita fora de uma classe ou dentro de uma classe, mas não dentro de um método.

1. Declaração fora da aula

Como vimos no exemplo acima, enumerações podem ser declaradas fora de uma classe e acessadas diretamente

2. Declaração dentro de uma classe

Enums também podem ser declarados dentro de uma classe, mas não dentro de um método.



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

Saída
RED 

Propriedades de Enum em Java

Existem certas propriedades seguidas por Enum conforme mencionado abaixo:

string encontrar c++
  • Tipo de aula: Implementado internamente como uma classe.
  • Constantes Enum: Cada constante é um objeto do tipo enum.
  • Suporte para troca: Pode ser usado em instruções switch.
  • Modificadores implícitos: Constantes são finais estáticos públicos.
  • Herança: Enums não podem estender classes, mas podem implementar interfaces.

Enum em uma instrução Switch

Enums podem ser usados ​​em instruções switch para lidar com diferentes casos com base nas constantes enum.

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

Saída
Other color 

Enum com métodos e construtor

Enums podem ter construtores e métodos executados separadamente para cada constante

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

Saída
Constructor called for: RED Constructor called for: GREEN Constructor called for: BLUE Color is: RED 

Enum com métodos abstratos

Enums podem declarar métodos abstratos que cada constante deve implementar.

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

Saída
1st day 5th day 

Iterando Enums usando valores()

Use EnumType.values() para percorrer todas as constantes enum.

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

Saída
RED GREEN BLUE 

Enum e EnumSet (iteração de intervalo específico)

EnumSet.range() permite a iteração em um intervalo específico de constantes enum.

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

Saída
TUESDAY WEDNESDAY THURSDAY FRIDAY 

Criando uma classe com um membro Enum

Podemos combinar enums com classes regulares para organizar a lógica do seu programa. Um enum pode ser uma variável membro em uma classe e os métodos podem executar ações com base no valor do enum.

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

Saída
Mondays are tough Wednesday are okay Fridays are exciting Saturdays are relaxing Sunday are for rest 

Explicação:

  • A classe EnumTest no código acima é criada com um membro do tipo Day. Possui construtor que usa Day enum como argumento e o atribui.
  • A classe possui o método TellItLikeItIs() que imprime a mensagem com base no valor do dia.
  • O método principal inclui objetos de EnumTest usando diferentes valores de enum Day e chamando o método TellItLikeItIs() em cada um.

OBSERVAÇÃO: A palavra-chave new é usada porque EnumTest é uma classe regular e não um enum, então criamos instâncias e passamos o valor do enum para seu construtor.