Gerenciamento de Memória em Java
em 21 de Janeiro de 2025
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
Criando um Enum Simples
Vamos criar um enum para representar os dias da semana:
public enum DiaDaSemana {
SEGUNDA, TERCA, QUARTA, QUINTA, SEXTA, SABADO, DOMINGO;
}
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;
}
}
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.
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);
}
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.
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;
}
}
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
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.