Palavra-chave enum em Java
A palavra-chave enum
em Java é usada para definir um conjunto de constantes nomeadas. É um tipo de dados especial que permite que a variável seja um conjunto de constantes predefinidas, tornando o código mais legível e de fácil manutenção. Os enums são comumente usados para representar uma coleção de constantes relacionadas, como dias da semana, meses do ano ou estados em um processo.
Uso
Os enums oferecem uma maneira de definir uma coleção de constantes de forma segura para o tipo. Eles podem incluir métodos e campos e podem implementar interfaces.
Sintaxe
enum EnumName {
CONSTANT1, CONSTANT2, CONSTANT3;
}
EnumName
: O nome do enum.CONSTANT1, CONSTANT2, CONSTANT3
: As constantes definidas no enum.
Exemplos
Exemplo 1: Enum básico
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}
public class EnumExample {
public static void main(String[] args) {
Day today = Day.MONDAY;
System.out.println("Today is: " + today);
}
}
Neste exemplo, um enum Day
é definido com constantes que representam os dias da semana. A variável today
recebe o valor Day.MONDAY
e o programa imprime o dia atual.
Exemplo 2: Enum com métodos
enum Size {
SMALL, MEDIUM, LARGE;
public String getSize() {
switch (this) {
case SMALL: return "Small Size";
case MEDIUM: return "Medium Size";
case LARGE: return "Large Size";
default: return "Unknown Size";
}
}
}
public class EnumWithMethodExample {
public static void main(String[] args) {
Size size = Size.MEDIUM;
System.out.println("Selected size: " + size.getSize());
}
}
Este exemplo demonstra um enum Size
com um método getSize()
que retorna uma representação de string do tamanho. A variável size
é atribuída a Size.MEDIUM
, e o programa imprime a descrição do tamanho correspondente.
Exemplo 3: Enum com campos e construtor
enum Planet {
MERCURY(3.303e+23, 2.4397e6),
VENUS(4.869e+24, 6.0518e6),
EARTH(5.976e+24, 6.37814e6);
private final double mass; // in kilograms
private final double radius; // in meters
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
public double getMass() {
return mass;
}
public double getRadius() {
return radius;
}
}
public class EnumWithFieldsExample {
public static void main(String[] args) {
for (Planet planet : Planet.values()) {
System.out.printf("Planet: %s, Mass: %f, Radius: %f%n", planet, planet.getMass(), planet.getRadius());
}
}
}
Neste exemplo, o enum Planet
tem os campos mass
e radius
, um construtor para inicializar esses campos e métodos getter para acessá-los. O programa percorre todas as constantes de enum e imprime seus detalhes.
Dicas e práticas recomendadas
- Uso para constantes: Use enums para definir um conjunto fixo de constantes, melhorando a legibilidade e a manutenção do código.
- Tipo de segurança: Os enums oferecem segurança de tipo em comparação com as definições de constantes tradicionais que usam
final static
. - Trocar declarações: Os enums funcionam perfeitamente com instruções switch, tornando o código mais limpo.
switch (size) { case SMALL: // Handle small size break; case MEDIUM: // Handle medium size break; case LARGE: // Handle large size break; }
- Implementar interfaces: Os enums podem implementar interfaces, o que permite um código mais flexível e reutilizável.
interface Describable { String getDescription(); } enum Color implements Describable { RED, GREEN, BLUE; @Override public String getDescription() { return "Color: " + this.name(); } }
- Evite o uso excessivo: Embora os enums sejam poderosos, evite usá-los em excesso para constantes simples. Use-as quando houver um conjunto claro de constantes relacionadas.