Enums no Java
Aprenda nesse microexemplo como criar e utilizar enums no Java. Confira como esse poderoso recurso permite a definição de um conjunto limitado de valores para uma variável.
Qual seria o tipo adequado para o campo turno? Se turno é uma string, seus valores podem ser manhça, tarde , noite, margarina, azul.... Se turno é um inteiro, seus valores podem ser 1, 2, -999, -2, 0...
Turno tem valores conhecidos. Um turno deve ser manhã, tarde ou noite. Se declararmos Turno como enum, limitamos seus valores a um pequeno conjunto de constantes: MANHA, TARDE ou NOITE
Criando uma primeira enum
Em Java, uma enum é um tipo no qual declaramos um conjunto de valores constantes pré-definidos. Sua sintaxe é muito semelhante à declaração de uma classe, exceto pelo uso da palavra chave enum que antecede seu nome.
Abaixo apresentamos como declarar a enum Turno:
public enum Turno {
MANHA, TARDE, NOITE;
}
Por serem os campos de uma enum constantes, seus nomes são escritos em letras maiúsculas. No exemplo acima temos três campos que correspondem aos turnos manhã, tarde e noite.
Para atribuir um desses valores a uma variável podemos fazer como no código abaixo:
Turno turno = Turno.MANHA;
Perceba que ao utilizar enums limitamos os valores que podem ser atribuídos a uma variável. Sendo assim, devemos atribuir ao campo Turno um dos valores pré-definidos na enum Turno.
Classes enum e herança
Ao declarar uma enum estamos implicitamente estendendo a classe java.lang.Enum. Isso cria algumas limitações, porque o Java não suporta herança múltipla, o que impede uma classe enum de estender outras classes. Porém, uma classe enum pode ter propriedades, assim como um construtor e um método.
O código abaixo apresenta uma segunda versão da enum Turno, agora com a propriedade descrição, um construtor, que inicia essa propriedade, além de um método para retornar essa descrição:
public enum Turno {
MANHA("manhã"),
TARDE("tarde"),
NOITE("noite");
private String descricao;
Turno(String descricao) {
this.descricao = descricao;
}
public String getDescricao() {
return descricao;
}
}
O construtor de uma enum é sempre privado, não podendo ser invocado diretamente. Nele são iniciados todos os campos, que por serem constantes devem declarados antes das propriedades e do construtor da classe.
Métodos herdados de Enum
Uma vez que Turno herda de Enum, possui métodos declarados na classe pai. Um dos mais utilizados dentre eles é values(), que retorna um array contendo todos os campos da enum.
No exemplo a seguir imprimimos a descrição de cada um dos campos da enum Turno:
for (Turno t : Turno.values()) {
System.out.println(t.getDescricao());
}
Outros métodos úteis dessa classe são as apresentadas na Tabela 1:
Método | Retorno | Descrição |
---|---|---|
toString() | String | Retorna uma String com o nome da instância (em maiúsculas). |
valueOf(String nome) |
static <T extends Enum<T>> T |
Retorna o objeto da classe enum cujo nome é a string do argumento. |
ordinal() | int | Retorna o número de ordem do objeto na enumeração. |
Tabela 1. Métodos úteis da classe
Sugestão de conteúdo
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Vídeo