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:

Testar enum em Java (enumeração)

Na próxima lição veremos como trabalhar com construtores, campos e métodos em enums Java. Até!

 

Sobre Fábio dos Reis (1379 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*