Guia do artigo:
- Enum no Java
- Características dos tipos enum
- Declaração Enum
- Inicializando valores
- Imprimindo valor Enum
- Percorrendo Valores
- Comparando Valores Enum
Vamos apresentar os tipos Enum que, na linguagem Java, são usados para a criação de estruturas de dados organizados, podendo agrupar valores que tenham o mesmo sentido para dentro dessa estrutura.
Enum no Java
São tipos de campos que consistem em um conjunto fixo de constantes (static final), sendo como uma lista de valores pré-definidos. Na linguagem de programação Java, pode ser definido um tipo de enumeração usando a palavra chave enum.
Todos os tipos enums implicitamente estendem a classe java.lang.Enum, sendo que o Java não suporta herança múltipla, não podendo estender nenhuma outra classe.
Características dos tipos enum
Em relação às propriedades é preciso tomar os seguintes cuidados:
- As instâncias dos tipos enum são criadas e nomeadas junto com a declaração da classe, sendo fixas e imutáveis (o valor é fixo).;
- Não é permitido criar novas instâncias com a palavra chave new;
- O construtor é declarado private, embora não precise de modificador private explícito;
- Seguindo a convenção, por serem objetos constantes e imutáveis (static final), os nomes declarados recebem todas as letras em MAIÚSCULAS;
- As instâncias dos tipos enum devem obrigatoriamente ter apenas um nome;
- Opcionalmente, a declaração da classe pode incluir variáveis de instância, construtor, métodos de instância, de classe, etc.
Declaração Enum
Na declaração é definida uma classe chamada de tipo enum. O corpo da classe enum pode incluir métodos e outros campos. O compilador automaticamente adiciona alguns métodos especiais quando se cria um enum.
public enum Cartas {
A, J, Q, K;
}
Inicializando valores
Para iniciar os valores declarados dentro das variáveis Enum, é preciso declarar um construtor para iniciar os seus atributos que são declarados.
public enum CartasEnum {
J(11),Q(12),K(13),A(14);
public int valorCarta;
CartasEnum(int valor) {
valorCarta = valor;
}
}
Como mostrado na Listagem 2 inicializamos o construtor com apenas um argumento, o que corresponde ao mesmo número de argumentos declarados nos atributos. Pode ser possível declarar com mais argumentos, basta declarar suas variáveis com seus tipos e inicializar dentro do construtor.
Os tipos enum podem ser usados a qualquer momento em que se precise representar um conjunto fixo de constantes. Nos exemplos das Listagens 3 e 4 é mostrada a criação de um tipo Enum e a invocação dos valores e atributos.
public enum OpcoesMenu {
SALVAR(1), IMPRMIR(2), ABRIR(3), VISUALIZAR(4), FECHAR(5);
private final int valor;
OpcoesMenu(int valorOpcao){
valor = valorOpcao;
}
public int getValor(){
return valor;
}
}
Declaramos como parâmetro no método escolheOpcao() um tipo Enum, onde é feita uma comparação com o valor de entrada supostamente originado pelo usuário.
public class TestadoraEnum {
public static void escolheOpcao(OpcoesMenu opcao){
if(opcao == OpcoesMenu.SALVAR){
System.out.println("Salvando o arquivo!");
}
else if(opcao == OpcoesMenu.ABRIR){
System.out.println("Abrindo o arquivo!");
}
}
public static void main(String[] args) {
escolheOpcao(OpcoesMenu.ABRIR);
}
}
Imprimindo valor Enum
Nos exemplos das Listagens 5 e 6 é mostrado como pode ser impresso um valor do tipo enum, através do método name.
public enum MarcasEnum {
AMAZON, DELL, HP, TOSHIBA, LG, SAMSUNG;
}
Veja a saída de um valor através do método name.
Listagem 6: Imprimindo Valor
public class TestadoraEnum {
public static void main(String[] args) {
MarcasEnum hp = MarcasEnum.HP;
MarcasEnum samsung = MarcasEnum. SAMSUNG;
System.out.println("Nome da Marca = "+hp.name());
System.out.println("Nome da Marca = "+samsung.name());
}
}
Percorrendo Valores
Os valores Enum tem um método estático chamado values que retorna uma matriz contendo todos os valores do enum na ordem em que são declarados. Este método é normalmente usado em combinação com o for para construir cada repetição dos valores de um tipo de enumeração.
Neste exemplo é percorrido o tipo Enum feitos na Listagem 3.
Comparando Valores Enum
Um Enum pode ser comparado com outro objeto através do método equals.
Na Listagem 8 declaramos o método comparaEnum do tipo static para ser acessível para toda a classe e fazer referência ao tipo Enum declarado.
public class TestadoraEnum {
public static void comparaEnum(OpcoesMenu opcao){
if(opcao.equals(OpcoesMenu.SALVAR)){
System.out.println("Foi escolhido a opção Salvar");
}else if(opcao.equals(OpcoesMenu.ABRIR)){
System.out.println("Foi escolhido a opção ABRIR");
}else if(opcao.equals(OpcoesMenu.FECHAR)){
System.out.println("Foi escolhido a opção FECHAR");
}
}
public static void main(String[] args) {
comparaEnum(OpcoesMenu.SALVAR);
}
}
Nos tipos Enum também existem outros métodos descritos abaixo.
- String toString(): retorna uma String com o nome da instância (em maiúsculas).
- valueOf (String nome) – retorna o objeto da classe enum cujo nome é a string do argumento.
- int ordinal(): retorna o número de ordem do objeto na enumeração.
Mais informações acesse o link da documentação onde irá encontrar mais características e métodos
Espero ter ajudado e até a próxima! Compartilhe
Links Úteis
-
jQuery Scroll: Como saber se o usuário rolou a página
até o fim:
Aprenda a detectar o movimento da barra de rolagem usando jQuery para identificar quando o usuário chegou ao final da página. -
Entity Framework: Como fazer seu primeiro Mapeamento
Objeto-Relacional:
Aprenda a realizar seu primeiro Mapeamento Objeto-Relacional em C# utilizando o Entity Framework. Veremos aqui como criar o banco, a tabela e inserir dados nela a partir das classes do nosso sistema.
Saiba mais sobre Java
-
Linguagem
Java:
Neste Guia de Referência você encontrará todo o conteúdo que precisa para começar a programar com a linguagem Java, a sua caixa de ferramentas base para criar aplicações com Java. -
O que
é Java?:
Neste curso você aprenderá o que é o Java, tecnologia para desenvolvimento de software mais utilizada pelos programadores em todo o mundo. - Aprenda também como criar e utilizar enums no Java
Colabore com nosso Fórum
-
O
que é length no java?:
Bom dia colegas do Java.free preciso de uma ajuda, não estou conseguindo entender o length no java, gostaria que alguem me explicasse bem detalhadamente sobre o length.