Java Enums
Foto de Luis P.
Por: Luis P.
15 de Janeiro de 2025

Java Enums

Boas Práticas e Casos de Uso Avançados

Java Enums

O Enum no Java é um tipo de dados especial que representa um conjunto fixo de constantes. Introduzido no Java 5, ele oferece uma maneira eficiente e segura para trabalhar com valores constantes que pertencem a um grupo definido, como dias da semana, estados de um processo ou tipos de documentos.

Mais do que simples listas de constantes, enums no Java são classes completas e podem conter campos, métodos e construtores, tornando-os extremamente versáteis.

Neste artigo, exploraremos as boas práticas para o uso de enums e como aproveitar seus recursos mais avançados.


Benefícios de Usar Enums

  1. Segurança de Tipo: Evitam erros comuns de uso de strings ou inteiros para representar estados.
  2. Legibilidade: Melhoram a clareza do código ao representar grupos de valores relacionados.
  3. Funcionalidades Avançadas: Podem conter métodos, construtores e implementar interfaces.

Criando um Enum Simples

Vamos criar um enum para representar os dias da semana:

public enum DiaDaSemana {
    SEGUNDA, TERCA, QUARTA, QUINTA, SEXTA, SABADO, DOMINGO;
}

Uso Simples do Enum

public class ExemploEnum {
    public static void main(String[] args) {
        DiaDaSemana hoje = DiaDaSemana.QUARTA;

        if (hoje == DiaDaSemana.QUARTA) {
            System.out.println("Meio da semana!");
        }
    }
}

Adicionando Campos e Métodos ao Enum

Enums também podem conter campos e métodos. Vamos expandir o exemplo adicionando uma descrição para cada dia.

public enum DiaDaSemana {
    SEGUNDA("Início da semana"),
    TERCA("Segundo dia"),
    QUARTA("Meio da semana"),
    QUINTA("Quase sexta-feira"),
    SEXTA("Fim da semana de trabalho"),
    SABADO("Descanso"),
    DOMINGO("Relaxar");

    private final String descricao;

    DiaDaSemana(String descricao) {
        this.descricao = descricao;
    }

    public String getDescricao() {
        return descricao;
    }
}

Uso com Campos e Métodos

public class ExemploEnumComDescricao {
    public static void main(String[] args) {
        DiaDaSemana dia = DiaDaSemana.SEXTA;
        System.out.println("Hoje é " + dia + ": " + dia.getDescricao());
    }
}

Saída:

Hoje é SEXTA: Fim da semana de trabalho

Enums com Métodos Abstratos

Podemos criar enums com comportamentos diferentes para cada constante, utilizando métodos abstratos.

Exemplo: Operações Matemáticas

public enum Operacao {
    SOMA {
        @Override
        public double calcular(double a, double b) {
            return a + b;
        }
    },
    SUBTRACAO {
        @Override
        public double calcular(double a, double b) {
            return a - b;
        }
    },
    MULTIPLICACAO {
        @Override
        public double calcular(double a, double b) {
            return a * b;
        }
    },
    DIVISAO {
        @Override
        public double calcular(double a, double b) {
            if (b == 0) {
                throw new ArithmeticException("Divisão por zero");
            }
            return a / b;
        }
    };

    public abstract double calcular(double a, double b);
}

Uso

public class CalculadoraEnum {
    public static void main(String[] args) {
        double resultado = Operacao.SOMA.calcular(10, 5);
        System.out.println("Resultado: " + resultado);
    }
}

Saída:

Resultado: 15.0

Implementando Interfaces com Enums

Enums podem implementar interfaces, o que os torna ainda mais flexíveis.

Exemplo: Prioridades de Tarefas

public interface Prioridade {
    int getNivel();
}

public enum NivelPrioridade implements Prioridade {
    ALTA(3),
    MEDIA(2),
    BAIXA(1);

    private final int nivel;

    NivelPrioridade(int nivel) {
        this.nivel = nivel;
    }

    @Override
    public int getNivel() {
        return nivel;
    }
}

Uso

public class ExemploPrioridade {
    public static void main(String[] args) {
        NivelPrioridade prioridade = NivelPrioridade.ALTA;
        System.out.println("Prioridade: " + prioridade + " (Nível: " + prioridade.getNivel() + ")");
    }
}

Saída:

Prioridade: ALTA (Nível: 3)

Boas Práticas ao Usar Enums

  1. Evite Enums "inflados": Use enums para representar grupos fixos de constantes; não os sobrecarregue com lógicas desnecessárias.
  2. Use Campos Imutáveis: Campos adicionais devem ser finais para garantir a consistência.
  3. Documente Bem os Enums: Explique o significado de cada constante e seus comportamentos.
  4. Prefira Enums a Constantes Globais: Substitua constantes globais (como public static final) por enums para maior segurança e organização.

Enums no Java são muito mais do que listas simples de constantes. Com suporte a campos, métodos e comportamentos personalizados, eles oferecem uma solução poderosa para representar dados e comportamentos fixos no código. Ao adotar boas práticas e explorar seus recursos avançados, você pode criar códigos mais seguros, organizados e fáceis de manter.

Luis P.
Luis P.
Boa Ventura / PB
Responde em 7 h e 47 min
Identidade verificada
1ª hora grátis
5,0
nota média
1
avaliação
R$ 40
por hora
Graduação: Licenciatura em Computação (UEPB - Universidade Estadual da Paraíba)
Testes em Java, Java para Web, Java - Springboot
Professor de informática, português e inglês. Formado em computação e letras inglês/português. Servidor público aprovado em 3 concursos.

Confira artigos similares

Aprenda sobre qualquer assunto