Enum em Java

Neste post vou falar um pouco sobre enum e explorar alguns aspectos desta classe.

O que é enum em Java

Enumeração(ou Enum) é uma sequencia de constantes relacionadas. Elas também estão em outras linguagens de programação como C++.

Depois do JDK 1.4,  designers java decidiram adicionar o suporte a enums e foi oficialmente lançado no JDK 1.5.

Uma enumeração em Java é declarada pela keyword enum. enum é um tipo de classe especial que estende java.lang.Enum.

Provando que um enum está relacionado a java.lang.Enum

java.lang.Enum é a classe base de todos os tipos de enum em Java

Aqui, as constantes SEGUNDA, TERCA, QUARTA são final static inner classe de WeekDay que implicitamente estende java.lang.Enum Isto também significa que você não pode estender nenhuma outra classe porque Java não suporte herança múltipla. Ao tentarmos estender uma class ou outro enum, o compilador produzirá uma séria de erros. enuns é final por padrão e também não podem ser estendidos por outra classe.

Implementando uma Interface

Um Enum pode implementar uma interface ou várias interfaces, como outras classes podem fazer.

Veja que no “corpo de classe especifico de constante” foi implementado o método getDayFullName() da interface DayHandler.

Construtor

O construtor de um Enum deve ser default(package-private) ou private; Você nunca conseguirá invocar um construtor de Enum a não ser por suas constantes; O código abaixo não compila pois, o construtor não é default ou private.

Métodos Abstratos

Um Enum pode definir métodos abstratos (métodos que devam ser implementados), e, cada constante deve implementar esse método em sua “corpo de classe especifico de constante”

Os elementos do Enum podem sobrescrever um método do Enum.

Utilizando importação estática com Enums

Neste exemplo, utilizarei a class Thread e suas constantes MAX_PRIORITY, MIN_PRIORITY e NORM_PRIORIRY.  Estas constantes definem valores inteiros para representar a prioridade de uma Thread. Você pode utilizar esse valor, digitando o nome da classe seguido do nome da constante:

Ou, utilizar  importação estática para acessar diretamente a constante, sem precisar explicitar a classe.

Com enums é o mesmo caminho.

Exemplo:

Vamos definir um enum

Agora vamos testar a importação estática. Veja que podemos utilizar as constantes sem necessidade de digitar a classe enum.

 

Enums e Maps

Enuns podem ser utilizados como chave para coleções do tipo Map (i.e lembre-se que Map não estende Collection).

Saída:

Pode-se comparar as constantes de enuns com “==” ou equals()

 

Leave a Comment