Java enum & enum Class (com exemplos)

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 enumpalavra-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 finalpor 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.

Artigos interessantes...