Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Trabalhando com Enum em Java | Recursos e Técnicas Avançadas de Java
Estruturas de Dados em Java

bookTrabalhando com Enum em Java

Vamos avançar para outra estrutura de dados bastante interessante e, mais importante, distintiva - enum.

Vamos analisar como criar um enum. A criação de um enum difere significativamente das outras estruturas de dados, pois é realizada no nível de classe:

DaysOfTheWeek.java

DaysOfTheWeek.java

copy
123456789
public enum DaysOfTheWeek { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

Aplicação Prática

Enum é necessário para que seja possível referenciar facilmente a constante. Como se trata de uma lista de constantes, o acesso é feito da seguinte maneira:

Main.java

Main.java

copy
123456789101112131415161718
package com.example; public class Main { public static void main(String[] args) { Days today = Days.MONDAY; System.out.println(today); } } enum Days { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

Aqui, simplesmente acessamos a constante do enum para identificar qual dia é hoje. Em vez de criar várias constantes diferentes, apenas armazenamos um array de constantes no enum. Isso é conveniente e muito prático. Por exemplo, em um dos desafios anteriores, poderíamos ter armazenado nomes de departamentos em um enum e utilizado a constante como chave.

Vamos analisar um exemplo:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637
package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingEmployees = new ArrayList<>(); marketingEmployees.add("Michael"); marketingEmployees.add("Alice"); marketingEmployees.add("Jimmy"); List<String> developerEmployees = new ArrayList<>(); developerEmployees.add("Bob"); developerEmployees.add("John"); developerEmployees.add("Ryan"); List<String> analyticsEmployees = new ArrayList<>(); analyticsEmployees.add("Alexander"); analyticsEmployees.add("Ben"); Map<Departments, List<String>> company = new HashMap<>(); company.put(Departments.MARKETING, marketingEmployees); company.put(Departments.DEVELOPMENT, developerEmployees); company.put(Departments.ANALYTICS, analyticsEmployees); System.out.println("Company: " + company); } } enum Departments { MARKETING, DEVELOPMENT, ANALYTICS }

Conversão para um Array

Além disso, é possível recuperar todos os valores constantes de um enum como um array utilizando o método values().

Veja um exemplo:

Main.java

Main.java

copy
12345678910111213
package com.example; public class Main { public static void main(String[] args) { Days[] array = Days.values(); Days monday = array[1]; System.out.println(monday); } } enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

Declarando Campos e Métodos em Enums

Também é possível declarar campos e métodos em enums.

Considere um exemplo de um semáforo:

Main.java

Main.java

copy
12345678910111213
enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

Em enums, os métodos funcionam de forma um pouco diferente. Como são constantes, não podem ser modificados. Portanto, adicionamos campos no construtor deste enum, e em seguida definimos o método getAction() que retorna imediatamente a ação a ser tomada para um semáforo específico. Como pode ser observado, especificamos essa ação diretamente no enum ao enumerar as constantes.

Veja um exemplo de chamada desse método:

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; public class Main { public static void main(String[] args) { TrafficLight currentLight = TrafficLight.RED; String currentAction = currentLight.getAction(); System.out.println("Action: " + currentAction); } } enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

Como pode ser observado, com o auxílio do método getAction(), foi possível obter imediatamente a ação a ser tomada para um semáforo específico. É possível alterar RED para qualquer outra cor e verificar o resultado.

Métodos e campos em enums não são utilizados com tanta frequência, mas essa funcionalidade está disponível, portanto, é importante conhecê-la. Mais informações sobre enums podem ser encontradas na Documentação oficial do Java

Vantagens do Enum em Java

  1. Melhora na legibilidade: a substituição de constantes numéricas e literais de string por valores nomeados torna o código mais legível;
  2. Segurança de tipo: o compilador garante a segurança de tipo ao trabalhar com enums, prevenindo erros relacionados a tipos;
  3. Conjunto limitado de valores: enums fornecem um conjunto fixo de valores, tornando o código mais previsível;
  4. Possibilidade de adicionar métodos e campos: enums podem conter métodos e campos, tornando-os mais poderosos em comparação com enumerações simples.

1. O que é um enum em Java?

2. Como declarar um enum chamado Months representando os meses do ano?

3. Como obter um array com todos os valores de um enum chamado Colors?

4. Qual das seguintes afirmações sobre o enum a seguir é verdadeira?

5. Como comparar corretamente currentStatus com Status.ACTIVE? Considere o seguinte enum:

question mark

O que é um enum em Java?

Select the correct answer

question mark

Como declarar um enum chamado Months representando os meses do ano?

Select the correct answer

question mark

Como obter um array com todos os valores de um enum chamado Colors?

Select the correct answer

question mark

Qual das seguintes afirmações sobre o enum a seguir é verdadeira?

Select the correct answer

question mark

Como comparar corretamente currentStatus com Status.ACTIVE? Considere o seguinte enum:

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 1

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

bookTrabalhando com Enum em Java

Deslize para mostrar o menu

Vamos avançar para outra estrutura de dados bastante interessante e, mais importante, distintiva - enum.

Vamos analisar como criar um enum. A criação de um enum difere significativamente das outras estruturas de dados, pois é realizada no nível de classe:

DaysOfTheWeek.java

DaysOfTheWeek.java

copy
123456789
public enum DaysOfTheWeek { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

Aplicação Prática

Enum é necessário para que seja possível referenciar facilmente a constante. Como se trata de uma lista de constantes, o acesso é feito da seguinte maneira:

Main.java

Main.java

copy
123456789101112131415161718
package com.example; public class Main { public static void main(String[] args) { Days today = Days.MONDAY; System.out.println(today); } } enum Days { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

Aqui, simplesmente acessamos a constante do enum para identificar qual dia é hoje. Em vez de criar várias constantes diferentes, apenas armazenamos um array de constantes no enum. Isso é conveniente e muito prático. Por exemplo, em um dos desafios anteriores, poderíamos ter armazenado nomes de departamentos em um enum e utilizado a constante como chave.

Vamos analisar um exemplo:

Main.java

Main.java

copy
12345678910111213141516171819202122232425262728293031323334353637
package com.example; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { List<String> marketingEmployees = new ArrayList<>(); marketingEmployees.add("Michael"); marketingEmployees.add("Alice"); marketingEmployees.add("Jimmy"); List<String> developerEmployees = new ArrayList<>(); developerEmployees.add("Bob"); developerEmployees.add("John"); developerEmployees.add("Ryan"); List<String> analyticsEmployees = new ArrayList<>(); analyticsEmployees.add("Alexander"); analyticsEmployees.add("Ben"); Map<Departments, List<String>> company = new HashMap<>(); company.put(Departments.MARKETING, marketingEmployees); company.put(Departments.DEVELOPMENT, developerEmployees); company.put(Departments.ANALYTICS, analyticsEmployees); System.out.println("Company: " + company); } } enum Departments { MARKETING, DEVELOPMENT, ANALYTICS }

Conversão para um Array

Além disso, é possível recuperar todos os valores constantes de um enum como um array utilizando o método values().

Veja um exemplo:

Main.java

Main.java

copy
12345678910111213
package com.example; public class Main { public static void main(String[] args) { Days[] array = Days.values(); Days monday = array[1]; System.out.println(monday); } } enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

Declarando Campos e Métodos em Enums

Também é possível declarar campos e métodos em enums.

Considere um exemplo de um semáforo:

Main.java

Main.java

copy
12345678910111213
enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

Em enums, os métodos funcionam de forma um pouco diferente. Como são constantes, não podem ser modificados. Portanto, adicionamos campos no construtor deste enum, e em seguida definimos o método getAction() que retorna imediatamente a ação a ser tomada para um semáforo específico. Como pode ser observado, especificamos essa ação diretamente no enum ao enumerar as constantes.

Veja um exemplo de chamada desse método:

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; public class Main { public static void main(String[] args) { TrafficLight currentLight = TrafficLight.RED; String currentAction = currentLight.getAction(); System.out.println("Action: " + currentAction); } } enum TrafficLight { RED("Stop"), YELLOW("Slow down"), GREEN("Go"); private final String action; TrafficLight(String action) { this.action = action; } public String getAction() { return action; } }

Como pode ser observado, com o auxílio do método getAction(), foi possível obter imediatamente a ação a ser tomada para um semáforo específico. É possível alterar RED para qualquer outra cor e verificar o resultado.

Métodos e campos em enums não são utilizados com tanta frequência, mas essa funcionalidade está disponível, portanto, é importante conhecê-la. Mais informações sobre enums podem ser encontradas na Documentação oficial do Java

Vantagens do Enum em Java

  1. Melhora na legibilidade: a substituição de constantes numéricas e literais de string por valores nomeados torna o código mais legível;
  2. Segurança de tipo: o compilador garante a segurança de tipo ao trabalhar com enums, prevenindo erros relacionados a tipos;
  3. Conjunto limitado de valores: enums fornecem um conjunto fixo de valores, tornando o código mais previsível;
  4. Possibilidade de adicionar métodos e campos: enums podem conter métodos e campos, tornando-os mais poderosos em comparação com enumerações simples.

1. O que é um enum em Java?

2. Como declarar um enum chamado Months representando os meses do ano?

3. Como obter um array com todos os valores de um enum chamado Colors?

4. Qual das seguintes afirmações sobre o enum a seguir é verdadeira?

5. Como comparar corretamente currentStatus com Status.ACTIVE? Considere o seguinte enum:

question mark

O que é um enum em Java?

Select the correct answer

question mark

Como declarar um enum chamado Months representando os meses do ano?

Select the correct answer

question mark

Como obter um array com todos os valores de um enum chamado Colors?

Select the correct answer

question mark

Qual das seguintes afirmações sobre o enum a seguir é verdadeira?

Select the correct answer

question mark

Como comparar corretamente currentStatus com Status.ACTIVE? Considere o seguinte enum:

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 1
some-alt