java enum java enumeration tutorial with examples
Este tutorial irá desenvolver a classe e o construtor Java Enum. Aprenderemos como usar Enum por meio de vários exemplos de programação Java:
Esta é uma aula especial cuja explicação será fornecida em detalhes. Uma visão da classe Java Enum será fornecida junto com a lista de métodos que ela suporta.
Programas suficientes que implementam os conceitos de enum Java e algumas perguntas frequentes que podem ser feitas durante as entrevistas estão incluídos neste tutorial para seu fácil entendimento.
=> Verifique aqui para ver a série de treinamento Java para todos.
O que você aprenderá:
Enumeração Java
Uma enumeração Java nada mais é que uma lista de variáveis de instância, métodos ou construtores. Estes são um grupo de constantes. O conceito de enumeração foi introduzido no JDK5. A propriedade padrão de cada constante de enumeração é public, static e final.
enum Keyword
A enumeração é criada usando uma palavra-chave chamada “ enum ”.
A seguir está a sintaxe com a qual podemos criar uma enumeração.
Sintaxe:
enum enumerated_type_name
{
enumerador1, enumerador2,… enumeradorN;
}
Observação: enum pode ser definido apenas dentro de uma classe ou interface de nível superior ou em um contexto estático. Não deve estar dentro de um método.
enum Exemplo
Neste exemplo, vamos inicializar quatro enumeradores, ou seja, espadas, copas, ouros e paus pertencentes a um tipo enumerado chamado cartas.
Em seguida, tentaremos imprimir cada um desses enumeradores.
/* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public class A { public static void main(String() args) { /* * stored each of the enumerators in the * reference variables a1,a2,a3,a4 respectively. * note that the new keyword was not used here */ cards a1 = cards.spade; cards a2 = cards.club; cards a3 = cards.heart; cards a4 = cards.diamond; System.out.println('Enumerators are: '+ a1 + ',' + a2 + ',' + a3 + ',' + a4); } }
Resultado:
Classe Enum
Uma coisa que você deve ter notado no exemplo acima (ver comentários) é que não usamos um “Nova palavra-chave” durante a instanciação. Embora as enumerações definam uma classe Enum e os construtores também, elas não usam uma nova palavra-chave.
Podemos usar os enumeradores definidos da mesma maneira que os primitivos. Enum é uma classe genérica e todas as enumerações herdam Enum.
Sintaxe:
// E é o tipo de enumeração.
classe Enum
Como usar Enum em Java
Vamos ver como usar Enum em vários cenários com a ajuda de exemplos Java:
Dentro de uma classe
Enum pode ser declarado dentro ou fora (exemplo de palavra-chave enum) de uma classe, mas não dentro de um método. Aqui, vamos demonstrar como enum é declarado dentro de uma classe.
No exemplo abaixo , criamos uma enumeração dentro de uma classe e, em seguida, buscamos o valor ou enumerador com a ajuda de uma variável de referência a1.
public class A { /* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public static void main(String() args) { /* * stored each of the enumerators in the * reference variables a1. * note that the new keyword was not used here */ cards a1 = cards.heart; System.out.println('Card is: '+ a1); } }
Resultado:
Iterando Enum por meio de Loops
Aqui, discutiremos como podemos percorrer um enum. Declaramos enumeração com quatro enumeradores (fora de uma classe). Em seguida, inicializamos um para cada loop (dentro de uma classe) e tentamos buscar o valor dos enumeradores.
/* * created an enumeration called games * with four enumerators. */ enum games { ludo, Chess, Badminton, Cricket; } public class A { public static void main(String() args) { /* * used forEach loop and stored the value in 'index' * and printed the value of each enumerator */ System.out.println('Using for each loop'); for (games index:games.values()) { System.out.println(index); } } }
Resultado:
como testar métodos privados usando mockito
Em if-else
No programa a seguir, criamos uma enumeração com três enumeradores diferentes e, em seguida, armazenamos o enumerador na variável de referência para um dos enumeradores especificados.
Em seguida, iniciamos a verificação da condição if, onde implementamos duas condições especificadas com OR para que, se uma dessas condições for atendida, ele imprimirá a instrução especificada na condição if.
Caso contrário, ele imprimirá a instrução especificada na condição else.
/* * created an enumeration called players * with three enumerators. */ enum players { sachin, virat, dhoni; } public class A { public static void main(String() args) { /* * stored enumerator in reference variable a1 for * contant dhoni */ players a1 = players.dhoni; /* * Started if statement with OR condition. * If any of these conditions are met then it will * print the statement specified inside if statement */ if(a1 == players.virat || a1 == players.sachin) { System.out.println('Sachin and Virat are greatest batsmen'); } /* * if none of the above condition is met then it will * print the below specified statement */ else { System.out.println('Dhoni is the best Captain'); } } }
Resultado:
In Switch Statement
No programa abaixo, criamos uma enumeração com quatro enumeradores. Em seguida, armazenamos um dos enumeradores na variável de referência. Depois disso, inicializamos uma instrução Switch e verificamos cada um desses enumeradores.
Após a ocorrência desse enumerador específico, ele imprimirá a declaração especificada no caso específico.
/* * created an enumeration called players * with four enumerators. */ enum players { sachin, dravid, virat, dhoni; } public class A { public static void main(String() args) { /* * stored enumerator in reference variable a1 for * contant dravid */ players a1 = players.dravid; /* * Started Switch Statement and if the element * matches with a1 then it will print the statement * specified in the case */ switch(a1) { // does not match case sachin: System.out.println('Sachin is best bastman ever'); break; // matches case dravid: System.out.println('Dravid is the best Test Batsman'); break; // does not match case virat: System.out.println('Virat is modern great'); break; // does not match case dhoni: System.out.println('Dhoni is the best captain ever'); break; } } }
Resultado:
Campo Enum e métodos
Campo Enum
Esta seção explicará o campo enum em detalhes. Podemos adicionar campos ao enum Java e cada enumerador obtém esses campos. O valor do campo deve ser atribuído ao construtor do enum.
Na sintaxe abaixo, podemos ver que uma enumeração foi definida com três enumeradores. Ao lado de cada enumerador, definimos um campo do tipo int. ( Por exemplo. - (3), (2) e (1) respectivamente).
Isso soma que enum Java tem um construtor que leva um int. Este construtor define o campo int. Quando um enumerador é definido, esse valor int (especificado para esse enumerador) é passado para o construtor.
Sintaxe:
public enum A { /* * calls a contructor with value * defined on the respective enumerator */ Enumerator1(3), Enumerator2(2), Enumerator3(1) /* * semicolon needed for the last enumerator * if there is a method following it. */ ; private final int constant; private A(int constant) { this.constant = constant; } }
Observação: Por exemplo, no campo Enum, consulte a seção “ Construtor Enum ”.
Métodos Enum
# 1) nome ()
public final String name () - Retorna o nome da constante de chamada (inalterado ou inalterado).
# 2) é igual a ()
public final boolean equals (Object other) - Retorna true se obj e o objeto de chamada se referem à mesma constante.
# 3) toString
public String toString () - Retorna o nome da constante de chamada. Não corresponde necessariamente ao nome usado na declaração da enumeração.
# 4) clone
clone do objeto final protegido ()
lança CloneNotSupportedException - Isso significa que o enum lançará uma exceção ao tentar clonar.
# 5) hashCode ()
public final int hashCode () - Retorna o código hash para o objeto de chamada.
# 6) finalize ()
protected final void finalize () - a classe enum não pode ter métodos finalizados. Sem valor de retorno.
# 7) compareTo ()
public final int compareTo (E obj) - Compara o enum com o objeto especificado obj. Ele retorna negativo se o objeto for menor que o objeto especificado. Retorna positivo se este objeto for maior que o objeto especificado obj e retorna zero se o obj especificado é igual a este objeto.
# 8) getDeclaringClass
public final Class getDeclaringClass () - Retorna o tipo de enumeração (também conhecido como classe declarante de enum) do qual a constante de chamada é membro.
# 9) ordinal (), values () e valueOf ()
Todos esses métodos fazem parte do pacote java.lang.Enum . O método ordinal () retorna a ordem da constante de enumeração com base no índice da constante.
O método values () retorna todos os valores presentes na enumeração. O método valueOf (String) retorna a constante de enumeração da String de entrada. Se a String especificada não corresponder à constante, ela lançará IllegalArgumentException.
A seguir está o exemplo de programação em que usamos o mesmo exemplo (como exemplo de palavra-chave enum) e implementamos o conceito de todos os três métodos.
/* * created an enumeration called cards * with four enumerators. */ enum cards { spade, club, heart, diamond; } public class A { public static void main(String() args) { /* * created an array arr() which will store the * value of the constants/enumerators declared in the enumeration */ cards arr() = cards.values(); /* * used forEach loop and stored the value in 'type' * and printed the value as well as index with the help of * ordinal() method */ for (cards type:arr) { System.out.println(type + ' occurs at ' + type.ordinal()); } /* * passed heart as an input String which matches with the * constant declared in 'cards' */ System.out.println(cards.valueOf('heart')); } }
Resultado:
Construtor Enum
Enum (visto que também é uma classe) oferece suporte ao construtor para passar dados durante a criação de enumeradores ou também conhecido como constantes de enum.
A propriedade principal de um construtor enum é que eles são private ou private-package. Isso significa que eles podem ser acessados em uma classe ou em um pacote.
Vamos ver o exemplo abaixo. Aqui, usamos tanto o método quanto o construtor. Em primeiro lugar, criamos uma enumeração chamada “jogadores” que tem cinco enumeradores e o campo.
Então, temos um construtor e um método que retornará o número de execuções marcadas por cada jogador ou enumerador ou constante de enum.
Depois disso, temos a classe principal na qual fizemos uso para cada loop com o método values () para armazenar e iterar cada enumerador. Além disso, chamamos o método para o número de corridas marcadas por cada jogador.
/* * Created enumeration players with the field. * Declared a constructor and a method to return * the number of runs scored by the players. */ enum players { dravid(10889), sachin(18426), ganguly(11363), virat(11867), dhoni(10773) ; private int runs; /* * Created enumeration players with the field. * Declared a constructor and a method to return * the number of runs scored by the players. */ enum players { dravid(10889), sachin(18426), ganguly(11363), virat(11867), dhoni(10773) ; private int runs; players(int r) { runs = r; } int getRuns() { return runs; } } /* * Used values() method to get the enumerators and a for each loop * to get the number of runs scored by each player */ public class A { public static void main(String args()) { for (players a : players.values()) System.out.println(a + ' has scored ' + a.getRuns() + ' ODI runs'); } }
Resultado:
perguntas frequentes
P # 1) Qual é a diferença entre Iterator e Enumeration em Java?
Responda: A seguir está a diferença entre Iterator e Enumeração.
Iterator | Enumeração |
---|---|
É um cursor genérico que é usado para iterar elementos e é aplicável a todas as classes da coleção. | Não é um cursor genérico porque é aplicável apenas a classes legadas, como Enum. Apenas permissão de leitura para uma classe de coleção. |
Alguns dos métodos são hasNext (), next () para iteração. | Alguns dos métodos são hasMoreElements (), nextElement () para iteração. |
Podemos remover o elemento em uma coleção usando iterator. | Não podemos remover o elemento em uma coleção usando Enumeração porque ele tem apenas permissão de leitura. |
P # 2) Como Enum oferece suporte a herança?
Responda: Afinal, Enum também é uma classe em Java, portanto, ela deve oferecer suporte à herança, que é um princípio básico do OOPS. Todas as enumerações estendem a classe java.lang.Enum. Como uma classe só pode estender um único pai, a classe Enum não estende nenhum outro.
O toString (), que faz parte da classe Enum (explicado na seção Método Enum), é substituído na classe java.lang.Enum.
Conclusão
Neste tutorial, discutimos as enumerações, enumeradores, classe Java Enum e a palavra-chave enum com exemplos apropriados e explicações sempre que necessário. Além disso, fornecemos uma visão dos métodos importantes associados à classe Enum com o campo enum.
Uma visão do construtor, enum com if-else, switch e loops foram fornecidos.
=> Visite aqui para aprender Java do zero.
Leitura recomendada
- Tutorial de classe de scanner Java com exemplos
- Java Integer e classe Java BigInteger com exemplos
- Tutorial de Java Float com exemplos de programação
- O que é Java Vector | Tutorial da classe Java Vector com exemplos
- TreeMap em Java - Tutorial com exemplos de TreeMap em Java
- Java Double - Tutorial com exemplos de programação
- Tutorial da classe Java Array - classe java.util.Arrays com exemplos
- Conceitos de C #: construtor, destruidor, classe estática, estrutura e enum