Neste tutorial, aprenderemos sobre enums em Java. Aprenderemos a criar e usar enums e classes de enum com a ajuda de exemplos.
Em Java, um enum (abreviação de enumeração) é um tipo que possui um conjunto fixo de valores constantes. Usamos a enum
palavra-chave para declarar enums. Por exemplo,
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )
Aqui, criamos um enum denominado Size. Ele contém valores fixos SMALL, MEDIUM, LARGE e EXTRALARGE.
Esses valores entre colchetes são chamados de constantes enum (valores).
Observação: as constantes enum geralmente são representadas em maiúsculas.
Exemplo 1: Java Enum
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Main ( public static void main(String() args) ( System.out.println(Size.SMALL); System.out.println(Size.MEDIUM); ) )
Resultado
PEQUENO MÉDIO
Como podemos ver no exemplo acima, usamos o nome enum para acessar os valores constantes.
Além disso, podemos criar variáveis de tipos enum. Por exemplo,
Size pizzaSize;
Aqui, pizzaSize é uma variável do tipo Size. Só pode ser atribuído a 4 valores.
pizzaSize = Size.SMALL; pizzaSize = Size.MEDIUM; pizzaSize = Size.LARGE; pizzaSize = Size.EXTRALARGE;
Exemplo 2: Java Enum com a instrução switch
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) class Test ( Size pizzaSize; public Test(Size pizzaSize) ( this.pizzaSize = pizzaSize; ) public void orderPizza() ( switch(pizzaSize) ( case SMALL: System.out.println("I ordered a small size pizza."); break; case MEDIUM: System.out.println("I ordered a medium size pizza."); break; default: System.out.println("I don't know which one to order."); break; ) ) ) class Main ( public static void main(String() args) ( Test t1 = new Test(Size.MEDIUM); t1.orderPizza(); ) )
Resultado
Eu pedi uma pizza de tamanho médio.
No programa acima, criamos um tipo de enum Size. Em seguida, declaramos uma variável pizzaSize do tipo Size.
Aqui, a variável pizzaSize só pode ser atribuída com 4 valores (SMALL, MEDIUM, LARGE, EXTRALARGE).
Observe a declaração,
Test t1 = new Test(Size.MEDIUM);
Ele chamará o Test()
construtor dentro da classe Test. Agora, a variável pizzaSize é atribuída com a constante MEDIUM.
Com base no valor, um dos casos da instrução switch case é executado.
Classe Enum em Java
Em Java, os tipos de enum são considerados um tipo especial de classe. Foi introduzido com o lançamento do Java 5.
Uma classe enum pode incluir métodos e campos exatamente como classes regulares.
enum Size ( constant1, constant2,… , constantN; // methods and fields )
Quando criamos uma classe enum, o compilador cria instâncias (objetos) de cada constante enum. Além disso, todas as constantes de enum são sempre public static final
por padrão.
Exemplo 3: classe Java Enum
enum Size( SMALL, MEDIUM, LARGE, EXTRALARGE; public String getSize() ( // this will refer to the object SMALL switch(this) ( case SMALL: return "small"; case MEDIUM: return "medium"; case LARGE: return "large"; case EXTRALARGE: return "extra large"; default: return null; ) ) public static void main(String() args) ( // call getSize() // using the object SMALL System.out.println("The size of the pizza is " + Size.SMALL.getSize()); ) )
Resultado
O tamanho da pizza é pequeno
No exemplo acima, criamos uma classe enum Size. Possui quatro constantes SMALL, MEDIUM, LARGE e EXTRALARGE.
Como Size é uma classe enum, o compilador cria automaticamente instâncias para cada constante enum.
Aqui dentro do main()
método, usamos a instância SMALL para chamar o getSize()
método.
Nota : Como classes regulares, uma classe enum também pode incluir construtores. Para saber mais sobre isso, visite Java enum constructor.
Métodos da classe Java Enum
Existem alguns métodos predefinidos em classes enum que estão prontamente disponíveis para uso.
1. Java Enum ordinal ()
O ordinal()
método retorna a posição de uma constante enum. Por exemplo,
ordinal(SMALL) // returns 0
2. Enum compareTo ()
O compareTo()
método compara as constantes enum com base em seu valor ordinal. Por exemplo,
Size.SMALL.compareTo(Size.MEDIUM) // returns ordinal(SMALL) - ordinal(MEDIUM)
3. Enum toString ()
O toString()
método retorna a representação de string das constantes enum. Por exemplo,
SMALL.toString() // returns "SMALL"
4. Nome de enum ()
O name()
método retorna o nome definido de uma constante enum na forma de string. O valor retornado do name()
método é final
. Por exemplo,
name(SMALL) // returns "SMALL"
5. Java Enum valueOf ()
The valueOf()
method takes a string and returns an enum constant having the same string name. For example,
Size.valueOf("SMALL") // returns constant SMALL.
6. Enum values()
The values()
method returns an array of enum type containing all the enum constants. For example,
Size() enumArray = Size.value();
Why Java Enums?
In Java, enum was introduced to replace the use of int constants.
Suppose we have used a collection of int
constants.
class Size ( public final static int SMALL = 1; public final static int MEDIUM = 2; public final static int LARGE = 3; public final static int EXTRALARGE = 4; )
Here, the problem arises if we print the constants. It is because only the number is printed which might not be helpful.
So, instead of using int constants, we can simply use enums. For example,
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE )
This makes our code more intuitive.
Also, enum provides compile-time type safety.
If we declare a variable of the Size type. For example,
Size size;
Aqui, é garantido que a variável manterá um dos quatro valores. Agora, se tentarmos passar valores diferentes desses quatro valores, o compilador irá gerar um erro.