Trabalhando 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
123456789public 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
123456789101112131415161718package 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
12345678910111213141516171819202122232425262728293031323334353637package 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
12345678910111213package 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
12345678910111213enum 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
1234567891011121314151617181920212223package 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
- Melhora na legibilidade: a substituição de constantes numéricas e literais de string por valores nomeados torna o código mais legível;
- Segurança de tipo: o compilador garante a segurança de tipo ao trabalhar com enums, prevenindo erros relacionados a tipos;
- Conjunto limitado de valores: enums fornecem um conjunto fixo de valores, tornando o código mais previsível;
- 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:
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Incrível!
Completion taxa melhorada para 4
Trabalhando 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
123456789public 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
123456789101112131415161718package 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
12345678910111213141516171819202122232425262728293031323334353637package 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
12345678910111213package 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
12345678910111213enum 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
1234567891011121314151617181920212223package 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
- Melhora na legibilidade: a substituição de constantes numéricas e literais de string por valores nomeados torna o código mais legível;
- Segurança de tipo: o compilador garante a segurança de tipo ao trabalhar com enums, prevenindo erros relacionados a tipos;
- Conjunto limitado de valores: enums fornecem um conjunto fixo de valores, tornando o código mais previsível;
- 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:
Obrigado pelo seu feedback!