English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriais Básicos de Java

Controle de Fluxo Java

Java Array

Java Orientação a Objetos (I)

Java Orientação a Objetos (II)

Java Orientação a Objetos (III)

Tratamento de Exceções Java

Java Lista (List)

Java Fila (Queue)

Java Conjuntos Map

Java Conjuntos Set

Java Entrada e Saída (I/O)

Java Reader/Writer

Outros tópicos do Java

Enumeração (Enum) Java

Neste tutorial, vamos aprender sobre enumerações no Java. Vamos aprender a criar e usar enumerações e classes de enumeração com a ajuda de exemplos.

No Java, uma enumeração é um tipo que possui um conjunto fixo de valores possíveis. Usamos a palavra-chave enum para declarar uma enumeração. Por exemplo,

enum Size { 
   PEQUENO, MÉDIO, GRANDE, EXTRA GRANDE 
}

Aqui, criamos uma enumeração chamada Size.

Os valores dentro dos colchetes são chamados de valores de enumeração (constantes). Esses são os únicos valores que o tipo de enumeração pode manter.

Atenção:Os constantes de enumeração geralmente são representados em maiúsculas.

Vamos dar um exemplo simples.

enum Size {
   PEQUENO, MÉDIO, GRANDE, EXTRA GRANDE
}
class Main {
   public static void main(String[] args) {
      System.out.println(Size.SMALL);
      System.out.println(Size.MEDIUM);
   }
}

Resultado de saída

SMALL
MEDIUM

Pode-se ver no exemplo acima que usamos o nome da enumeração para acessar o valor constante.

Da mesma forma, podemos criar variáveis do tipo enumerativo. Por exemplo,

Size pizzaSize;

Aqui, pizzaSize é uma variável do tipo Size. Ela pode atribuir4valores.

pizzaSize = Size.SMALL;
pizzaSize = Size.MEDIUM;
pizzaSize = Size.LARGE;
pizzaSize = Size.EXTRALARGE;

Exemplo1: enumerativo Java

enum Size {
 PEQUENO, MÉDIO, GRANDE, EXTRA GRANDE
}
class Test {
 Size pizzaSize;
 public Test(Size pizzaSize) {
   this.pizzaSize = pizzaSize;
 }
 public void orderPizza() {
   switch(pizzaSize) {
     case SMALL:
       System.out.println("Eu pedi uma pizza pequena.");
       break;
     case MEDIUM:
       System.out.println("Eu pedi uma pizza média.");
       break;
     default:
       System.out.println("Eu não sei qual pedir.");
       break;
   }
 }
}
class Main {
 public static void main(String[] args) {
   Test t1 = new Test(Size.MEDIUM);
   t1.orderPizza();
 }
}

Resultado de saída

Eu pedi uma pizza média.

No programa acima, criamos um tipo enumerativo Size. Em seguida, declaramos a variável pizzaSize do tipo Size.

a variável pizzaSize pode atribuir4valores (SMALL, MEDIUM, LARGE, EXTRALARGE).

a variável pizzaSize atribuiu a constante MEDIUM. Baseado nisso, será impressa uma condição da instrução switch case.

Classe enumerativa Java

Em Java, o tipo enumerativo é considerado um tipo especial de classe. Ele é no Java 5introduzido na versão.

uma classe enumerativa pode conter métodos e campos como uma classe convencional.

enum Size {
    constant1, constant2, ..., constantN;
    //Métodos e campos
}

as constantes enumerativas são sempre públicas, estáticas e finais por padrão.

ao criar uma classe enumerativa, o compilador também criará uma instância (objeto) para cada constante enumerativa.

Exemplo2: classe enumerativa

enum Size{
   SMALL, MEDIUM, LARGE, EXTRALARGE;
   public String getSize() {
      //isto referenciará o objeto SMALL
      switch(this) {
         case SMALL:
          return \
         case MEDIUM:
          return \
         case LARGE:
          return \
         case EXTRALARGE:
          return \
         default:
          return null;
      }
   }
   public static void main(String[] args) {
      //
      System.out.println(\ + Size.SMALL.getSize());
   }
}

Resultado de saída

O tamanho da pizza é small

No exemplo acima, criamos uma classe enumeração Size. Ela tem quatro constantes SMALL, MEDIUM, LARGE e EXTRALARGE.

Como Size é uma classe enumeração, o compilador cria automaticamente uma instância para cada constante de enumeração.

Dentro do método main(), já usamos o exemplo SMALL para chamar o método getSize().

Como classes normais, as classes enumeração também podem conter construtores. Para obter mais informações, acesseConstrutores de Enumeração Java.

Métodos da classe enumeração

Existem alguns métodos pré-definidos na classe enumeração que podem ser usados a qualquer momento.

Método ordinal()

O método ordinal() retorna a posição do constante de enumeração. Por exemplo:

ordinal(SMALL) 
//retorna 0

Método compareTo()

O método compareTo() compara os constantes de enumeração com base no valor ordinal. Por exemplo:

Size.SMALL.compareTo(Size.MEDIUM)
 //retorna ordinal(SMALL) - ordinal(MEDIUM)

Método toString()

O método toString() retorna a representação em string do constante de enumeração. Por exemplo:

SMALL.toString()
//retorna \

Método name()

O método name() retorna o nome definido em string do constante de enumeração na forma de string. O valor retornado pelo método name() é final. Por exemplo:

name(SMALL)
//retorna \

Método valueOf()

O método valueOf() usa uma string e retorna o constante de enumeração com o mesmo nome de string. Por exemplo:

Size.valueOf("SMALL")
//retorna o constante SMALL

Método values()

O método values() retorna um array de tipo enumeração contendo todos os constantes de enumeração. Por exemplo:

Size[] enumArray = Size.value();

Por que usar enumerações em Java?

No Java, foi introduzido o enum para substituir o uso de constantes int.

Suponha que usamos um conjunto de constantes int.

class Size {
   public final static int PEQUENO = 1;
   public final static int MÉDIO = 2;
   public final static int GRANDE = 3;
   public final static int EXTRA GRANDE = 4;
}

 Aqui, se imprimirmos a constante, surge um problema. Isso porque apenas imprime números, o que pode não ajudar.

Portanto, podemos usar simplesmente a enumeração, em vez de usar constantes int. Por exemplo,

enum Size {
   PEQUENO, MÉDIO, GRANDE, EXTRA GRANDE
}

Isso torna nosso código mais intuitivo.

Da mesma forma, a enumeração oferece segurança de tipo no tempo de compilação.

Se declaramos uma variável do tipo Size (como mostrado no exemplo acima), podemos garantir que a variável conterá um dos quatro valores. Se tentarmos passar um valor além desses quatro, o compilador lançará um erro.