Prefácio
Em nossa programação diária, geralmente existem esses "conjuntos de dados", cujos valores são estáveis no programa, e os elementos nos "conjuntos de dados" são limitados. Por exemplo, sete elementos de dados de segunda a domingo formam um "conjunto de dados" de uma semana e quatro elementos de dados da primavera, verão, outono e inverno formam um "conjunto de dados" das quatro temporadas. Como usar melhor esses "conjuntos de dados" em Java? Portanto, a enumeração é útil
A enumeração é na verdade um tipo, semelhante a Int e Char, o que significa que restringe a entrada ao definir variáveis. Você só pode atribuir os valores especificados no enum.
Implementação de enum
O JDK5 fornece a implementação dos tipos de enum java, que é mais açúcar sintático do que um novo tipo.
Public Enum temporada {primavera, verão, outono, inverno}Vamos dar uma olhada em como esse código é implementado por meio da ferramenta de descompilação. O código descompilado é o seguinte:
A temporada final da classe final estende enum {public static static [] valores () {return (temporada []) $ valores.clone (); } Public Static Season ValueOf (Strings) {return (estação) enum.valueof (estação, s); } temporada privada (string s, int i) {super (s, i); } Public Static Final Season Spring; verão final da temporada estática pública; outono da temporada final estática pública; Public Static final temporada final inverno; Valores da temporada final estática privada $ []; estático {spring = nova temporada ("primavera", 0); Verão = nova temporada ("verão", 1); Outono = nova temporada ("outono", 2); Inverno = nova temporada ("inverno", 3); $ Valores = (nova temporada [] {primavera, verão, outono, inverno}); }} Ao descompilar o código, você pode encontrar:
1. Season é uma classe comum que herda da Enum e é modificada através final para evitar a herança.
2. SPRING , SUMMER , AUTUMN e WINTER na enumeração são instâncias estáticas da aula Season e são inicializadas no método do <clinit> de classes.
3. values() retorna uma cópia da variável privada $VALUES[] $VALUES[] , que também é inicializado no método <clinit> .
Como usar enum
1. Modo Singleton
Já sabemos que o construtor de classe <clinit> só pode ser executado por um thread durante o estágio de inicialização do carregamento de classe; portanto, cada instância da enumeração tem e apenas uma cópia no heap java. Esse recurso facilita a implementação de enumeração. É exatamente assim que o autor da Java, Josh Bloch, defende o uso da implementação de padrões de singleton.
public Enum Singleton {Instância;} 2. Use no comutador
3. Campos e métodos personalizados
Além dos campos e métodos padrão em enumes, você pode personalizar a lógica de negócios.
public enum enumtest {Plus (" +") {@Override public int bind (int arg1, int arg2) {return arg1 + arg2; }}, Sub (" -") {@Override public int bind (int arg1, int arg2) {return arg1 - arg2; }}; operação final da string; Enumtest (operação da string) {this.operation = operação; } resumo int bind (int arg1, int arg2);}4. Implemente a interface
Operação da interface {int operação (int arg1, int arg2);} public Enum EnumTest implementa Operação {Plus (" +") {@Override public int Operação (int arg1, int arg2) {return arg1 + arg2; }}, Sub (" -") {@Override public int Operação (int arg1, int arg2) {return arg1 - arg2; }}; operação final da string; Enumtest (operação da string) {this.operation = operação; }} Em aplicações práticas, "+" e "-" pode ser usada como chaves, mais e sub como value , e pré-salvá-las no hashmap em hashMap . O método de uso específico é o seguinte:
Operação operação = hashmap.get ("+"); int resultado = operação.bind (1, 2);Resumir
O exposto acima é tudo sobre os tipos de enumeração em Java. Espero que, através da introdução deste artigo em enums em Java, possa ser útil para todos. Se você tiver alguma dúvida, deixe uma mensagem para se comunicar.