Como trabalhar com o tipo enum em Java (enumerações)
O tipo Enum em Java
O tipo especial enum define um conjunto de constantes, representadas por identificadores únicos – as enumerações. Os tipos enum, assim como as classes, são tipos de referência.
Criamos um tipo enum com a declaração enum, que consiste em uma lista de constantes de enumeração, separadas por vírgulas. Opcionalmente, é possível incluir na declaração outros componentes comuns às classes, como construtores, campos e métodos. Neste artigo vamos ver como criar enumerações simples, e na próxima lição também abordaremos esses elementos opcionais.
Quando declaramos uma enumeração em Java, uma classe enum é criada, com as seguintes restrições:
- As constantes enum são implicitamente final, pois declaram constantes que não podem ser modificadas.
- As constantes enum também são implicitamente static
- Não é possível criar um objeto do tipo enum usando o operador new. Isso gerará um erro de compilação.
- Podemos empregar as constantes enum em qualquer local onde usaríamos constantes comuns.
- O compilador gera um método estático de nome values para cada enum criada, o qual retorna um array das constantes da enumeração, na ordem em que elas foram declaradas.
- Uma enum estende a classe java.lang.Enum. Como o Java não suporta heranças múltiplas, uma enum não pode estender outras classes.
- Porém, pode ter propriedades e métodos, incluindo método construtor e getters.
- Como os campos da enum são imutáveis, não declaramos métodos setters.
- Note que o construtor da enum é sempre privado – não pode ser invocado diretamente.
Boa prática ao declarar enumerações: usar apenas letras maiúsculas nos nomes das constantes de enumeração, para diferenciá-las de variáveis.
Como criar uma enum em Java
Usamos a palavra-chave enum para declarar uma enumeração em Java.
Sintaxe:
modificador enum nomeEnum { const1, const2, …, constN };
Exemplo
Vamos criar uma enumeração que conterá constantes representando os meses do ano:
private enum Mes { JANEIRO, FEVEREIRO, MARÇO, ABRIL, MAIO, JUNHO, JULHO, AGOSTO, SETEMBRO, OUTUBRO, NOVEMBRO, DEZEMBRO };
Como usar uma enum
Após declarar uma enumeração, podemos utilizá-la da mesma maneira que usamos qualquer outro tipo de dado.
Por exemplo, podemos acessar seus membros usando o operador ponto .
Exemplo:
System.out.println(Mes.JANEIRO.toString());
Métodos em enums
Todas as enumerações estendem implicitamente a classe java.lang.Enum. Vários métodos estão disponíveis para as enums, tais como:
- toString() – Retorna o nome de uma constante como string
- values() – Retorna um array com todos os valores presentes na enum
- ordinal() – Permite encontrar os índices das constantes
- valueOf() – Retorna a constante enum de um valor de string específico, se ele existir.
Exibir os elementos da enum
Podemos iterar por todos os elementos de uma enumeração usando o método values():
Exemplo:
for (Mes m : Mes.values()) { System.out.printf("O mês de %s tem %d dias%n", m, m.diasMes()); }
Exibir os n primeiros elementos da enum
Podemos iterar por um grupo de elementos de uma enumeração usando o método range() da classe Enumset – Enumset.range(de, até):
Exemplo:
for (Mes m : Mes.Enumset.range(Mes.Janeiro,Mes.Junho)) { System.out.printf("O mês de %s tem %d dias%n", m, m.diasMes()); }
Criar um array a partir de uma Enumeração
Podemos criar um array contendo as constantes de uma enumeração usando o método values():
Exemplo:
// Criar o array a partir da enum Mes: Mes vetor[] = Mes.values(); // Visualizar o item na posição 3 do array System.out.println(vetor[3]); // Iterar por todos os elementos do array for (Mes i : vetor) { System.out.println(i); }
Descobrir o número de índice de uma constante
Podemos descobrir o número de índice de uma constante da enum com o método ordinal():
Exemplo:
System.out.println(Mes.Maio.ordinal());
Exemplo Completo
Vejamos um exemplo completo de emprego de enums em Java. Criaremos uma enumeração em um arquivo próprio, como uma classe, e a utilizaremos no programa principal.
Arquivo 01: enum DiasSemana (DiasSemana.java):
package enums; public enum DiasSemana { SEGUNDA, TERÇA, QUARTA, QUINTA, SEXTA, SÁBADO, DOMINGO }
Arquivo 02: Programa principal (main):
package enums; import java.util.Scanner; public class EnumsJava { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); int dia = 0; String diaSemana; System.out.println("Entre com o código do dia da semana:"); dia = entrada.nextInt(); entrada.close(); switch (dia) { case 1: diaSemana = DiasSemana.DOMINGO.toString(); break; case 2: diaSemana = DiasSemana.SEGUNDA.toString(); break; case 3: diaSemana = DiasSemana.TERÇA.toString(); break; case 4: diaSemana = DiasSemana.QUARTA.toString(); break; case 5: diaSemana = DiasSemana.QUINTA.toString(); break; case 6: diaSemana = DiasSemana.SEXTA.toString(); break; case 7: diaSemana = DiasSemana.SÁBADO.toString(); break; default: diaSemana = "Dia inválido"; } System.out.println("O dia da semana escolhido foi: " + diaSemana); } }
Rodando a aplicação para testar:
Na próxima lição veremos como trabalhar com construtores, campos e métodos em enums Java. Até!
Escreva um comentário