Ao definir um tipo de enumeração, você define essencialmente uma classe, mas muitos detalhes são preenchidos pelo compilador para você; portanto, até certo ponto, o papel da palavra -chave Enum é como classe ou interface.
Quando você define um tipo de enumeração usando "enum", os tipos que você define são essencialmente herdados da classe java.lang.enum, e o membro de cada enumeração é na verdade uma instância do tipo enum que você define. Todos eles são inadimplentes para o final, para que você não possa alterá -los, eles também são membros estáticos, para que você possa usá -los diretamente através do nome do tipo e, é claro, o mais importante é que todos são públicos.
Por exemplo:
OpConstants.javapublic enum opConstants {Turn_left, Turn_right, Shoot} Neste exemplo, os OpConstants herdam de java.lang.enum. Cada membro enum, como Turn_Left, Turn_right, Shoot. Todos são instâncias de objetos dos OpConstants, ou seja, instâncias de objetos. Naturalmente, existem alguns métodos acima. Por exemplo, o método ToString () é substituído, o que permite obter diretamente a descrição da string do valor da enumeração. O método valores () definido pelo objeto Enum permite obter todas as instâncias de enum e transmiti -las de volta em uma matriz. Você usa esses dois métodos para simplesmente exibir o conteúdo dos OpConstants:
Showenum.javapublic Classe Showenum {public static void main (string [] args) {for (opconstants constant: opConstants.Values ()) {System.out.println (constant.toString ()); }}} Basicamente, o println () ligará automaticamente no toString (), por isso não há problema em não escrever o tostring (). O resultado da execução é o seguinte:
Turn_leftturn_rightshoot
Você pode usar o método "==" ou igual () para comparar os objetos enum. "" == "" comparará se os objetos enum que você fornece são os mesmos (ou seja, ocupando o mesmo local de memória), enquanto iguals () comparará essencialmente o conteúdo de dois objetos enum. Por padrão, ele será comparado com base no valor da string do enum.
O método ValueOf () permite que você tente converter a sequência especificada em uma instância de enum. Você pode usar o método compareto (), que pode comparar a ordem dos dois objetos enum quando enumeração. Aqui está um exemplo
Showenum.javapublic Classe Showenum {public static void main (string [] args) {enumcompareto (opconstants.valueof (args [0])); } public static void enumcompareto (OpConstants constant) {System.out.println (constant); para (OpConstants C: OpConstants.Values ()) {System.out.println (constant.comPareto (c)); }}} Resultados da execução:
$ java showenum turn_right
Turn_right10-1
Passe de volta um valor positivo, indicando que a ordem está antes do objeto enum ser comparado, após o valor negativo ser indicado e 0 significa que as posições dos dois valores de enumeração mutuamente comparativa são os mesmos.
Para cada membro da enumeração, podemos usar o método ORDinal () para obter o índice de posição na ordem de enumeração, e o padrão começa com 0, por exemplo:
Showenum.javapublic class Showenum {public static void main (string [] args) {for (opconstants c: opconstants.values ()) {System.out.printf ("%d%s%n", c.ordinal (), c); }}} Resultados da execução:
0 Turn_Left1 Turn_right2 Shoot
A palavra -chave enum pode ser usada para definir uma classe Enum, e as constantes relevantes podem ser escritas em uma classe. Vamos dar uma olhada em um exemplo abaixo.
O seguinte código:
classe testclass {private testclass () {} // define um construtor privado e não pode instanciar um objeto do exterior // fornece duas instâncias A e B public estática pública final TestClass a = new testClass (); public static final testclass b = new testclass ();}Você pode usar os tipos de enum:
enum testclass01 {a, b;}uso:
Uma enumeração também pode ter construtores, campos e métodos:
enum testclass02 {a ("a") // Ao criar um objeto, passe nos parâmetros do construtor, b ("b"); Valor de String Private; TestClass02 privado (valor da string) {this.value = value; } public string getValue () {return this.value; }}As enumerações também podem ter métodos abstratos:
enum testclass03 {a () {// Implemente o método abstrato public void type () {System.out.println ("Excelente"); }}, B () {public void type () {System.out.println ("bom"); }}; Tipo de vazio resumo público (); // Definir método abstrato}Método de teste:
classe pública test02 {public static void main (string [] args) {print (testclass02.a); // pausa em parâmetros enum} public static void print (testclass02 t) {System.out.println (t.getValue ()); } enum testclass02 {a ("a"), b ("b"); Valor de String Private; TestClass02 privado (valor da string) {this.value = value; } public string getValue () {return this.value; }}}Resultados em execução:
Aauthor: Start Sign: Enquanto você ainda estiver tentando, não é uma falha.