O tipo enum é um novo recurso na linguagem Java 1.5.0 , projetado para resolver os pontos fracos na forma como valores enumerados foram manipulados em versões anteriores do Java. No seu mais básico , adota uma estrutura semelhante à do tipo enum em linguagens baseadas em C , no entanto , é muito mais poderosa. O Objeto Enum
Antes de passar para enums -se , é melhor para ilustrar o problema que o novo tipo de enumeração foi criado para resolver . Considere a seguinte classe:
public class Calendar {
int dayOfWeek
GO
público static final int segunda-feira = 0
GO
público static final int terça-feira = 1
GO público static final int quarta-feira = 2
GO .... />
vazio setDayOfWeek (data int) {... } }
Esta classe armazena o dia da semana , utilizando um conjunto de constantes enumeradas com valores inteiros de 0-7 , cada um correspondente a um dia diferente , e espera-se que outros desenvolvedores que usam essa classe vai usar essas constantes ao usar a classe . No entanto, nada impõe isso. Outras classes poderia ignorar os constantes , use suas próprias constantes (que começa com o domingo , talvez) por engano, ou mesmo, como resultado de um bug , passe em \\ " 8 \\ " como um dia da semana , potencialmente permitindo que um bug para propagar ainda mais do que deveria. Também é particularmente informativo na depuração, como o valor de \\ " dayOfWeek \\" vai ser impresso para o console ou para um depurador simplesmente como um número inteiro que tem de ser procurada no código-fonte. Enumerações são projetados para lidar com todas estas questões. O seguinte é a mesma classe , usando a enumeração tipo em vez de um conjunto de constantes enumeradas :
public class Calendar {
Dia public enum { segunda, terça , quarta-feira , quinta, sexta , sábado, domingo
}
Dia dayOfWeek
setDayOfWeek void ( dia d ) {... } }
O código acima , além de ser mais limpo e legível , aborda todos os problemas listados acima, com constantes enumeradas . Os clientes são agora forçados a usar apenas os próprios valores enumerados , e depuradores irá mostrar o nome do valor enumerado e não um inteiro. Além disso , enumerações ter uma série de outras vantagens . Por exemplo , eles podem ser utilizados com o novo recurso para - cada ciclo , que foi adicionado em Java 1.5.0 . A classe Calendar poderia incluir método como este :
printDays void ( ) {
para (Dia d: Day.values ()) {
System.out.println (" Hoje é " + d )
GO } }
Este método irá iterar todos os dias e imprimir seus nomes. Enums
são classes em seu próprio direito , o que significa que eles podem ter seus próprios métodos e construtores . Considere o seguinte enum , que armazena os personagens em um jogo, permitindo que com uma breve descrição do que o caráter :
Character public enum { />
MYSTERIOUS_WOMAN ( " Vestindo um vestido vermelho. " ) , />
antagonistas ( " Esbanjando mal . ");
Cordas descrição
GO />
Character (descrição string) {
this.description = />
} }