Entendendo ENUM com Java

Em Java, a palavra-chave enum é utilizada para representar um conjunto fixo de constantes, tornando o código mais legível e seguro. ENUMs são frequentemente utilizados para representar estados, tipos e categorias dentro de um sistema. Neste artigo, exploraremos os conceitos fundamentais dos ENUMs em Java, suas vantagens e como utilizá-los de maneira eficiente.

O que é um ENUM?

ENUM (abreviação de “enumeration”) é um tipo especial de classe em Java que define um conjunto de constantes pré-definidas. Ele pode ser considerado um tipo de dado que restringe os valores possíveis a um grupo específico.

A sintaxe básica para definir um ENUM é a seguinte:

public enum DiaDaSemana {
    SEGUNDA, TERÇA, QUARTA, QUINTA, SEXTA, SÁBADO, DOMINGO;
}

Cada elemento do ENUM representa uma instância única e imutável da enumeração. Diferente de constantes definidas com static final, ENUMs possuem funcionalidades adicionais, como métodos e construtores.

Benefícios do uso do ENUM

  • Maior legibilidade: Facilita a compreensão do código, pois os valores são autodescritivos.
  • Segurança de tipo: Evita valores inválidos, pois só aceita os valores definidos.
  • Facilidade de manutenção: Caso precise adicionar ou remover um valor, basta alterar a enumeração sem impactar outras partes do código.
  • Métodos úteis: ENUMs em Java possuem métodos embutidos, como values() e valueOf().

Métodos e Atributos em ENUM

ENUMs podem conter atributos, métodos e construtores, permitindo um uso mais dinâmico. Veja um exemplo:

public enum StatusPedido {
    PENDENTE(1), PROCESSANDO(2), ENVIADO(3), ENTREGUE(4);

    private final int codigo;

    StatusPedido(int codigo) {
        this.codigo = codigo;
    }

    public int getCodigo() {
        return codigo;
    }
}

Nesse exemplo, cada status de pedido possui um código associado. Podemos acessar os valores assim:

public class Main {
    public static void main(String[] args) {
        StatusPedido status = StatusPedido.ENVIADO;
        System.out.println("Status: " + status);
        System.out.println("Código do status: " + status.getCodigo());
    }
}

Saída:

Status: ENVIADO
Código do status: 3

Utilizando ENUM com Switch Case

Uma das vantagens dos ENUMs é a facilidade de uso dentro de um switch case:

public class TesteEnum {
    public static void main(String[] args) {
        DiaDaSemana dia = DiaDaSemana.SEXTA;

        switch (dia) {
            case SEGUNDA:
                System.out.println("Começo da semana!");
                break;
            case SEXTA:
                System.out.println("Sextou!");
                break;
            case DOMINGO:
                System.out.println("Dia de descanso!");
                break;
            default:
                System.out.println("Dia comum.");
        }
    }
}

Saída:

Sextou!

Convertendo ENUM para String e Vice-Versa

Podemos converter ENUMs para String e vice-versa utilizando valueOf() e toString():

public class ConversaoEnum {
    public static void main(String[] args) {
        // Convertendo ENUM para String
        DiaDaSemana dia = DiaDaSemana.TERÇA;
        String nomeDoDia = dia.toString();
        System.out.println("Nome do dia: " + nomeDoDia);

        // Convertendo String para ENUM
        DiaDaSemana diaConvertido = DiaDaSemana.valueOf("SEXTA");
        System.out.println("Dia convertido: " + diaConvertido);
    }
}

Saída:

Nome do dia: TERÇA
Dia convertido: SEXTA

Conclusão

ENUMs são uma poderosa funcionalidade do Java que permite criar códigos mais seguros, legíveis e organizados. Eles oferecem um conjunto fixo de valores que podem ser enriquecidos com métodos e atributos, facilitando o desenvolvimento e a manutenção de sistemas. Ao entender e aplicar corretamente os ENUMs, você poderá escrever códigos mais eficientes e confiáveis.