Lorsque vous définissez un type d'énumération, vous définissez essentiellement une classe, mais de nombreux détails sont remplis par le compilateur pour vous, donc dans une certaine mesure, le rôle du mot clé Enum est comme la classe ou l'interface.
Lorsque vous définissez un type d'énumération à l'aide de "Enum", les types que vous définissez sont essentiellement hérités de la classe java.lang.enum, et le membre de chaque énum est en fait une instance du type d'énumération que vous définissez. Ils sont tous définitifs par défaut, donc vous ne pouvez pas les changer, ce sont également des membres statiques, vous pouvez donc les utiliser directement via le nom de type, et bien sûr, surtout, ils sont tous publics.
Par exemple:
Opconstants.javapublic énum opconstants {tour_left, turt_right, shoot} Dans cet exemple, Opconstants hérite de java.lang.enum. Chaque membre de l'énumération tel que Turn_left, Turn_Right, Shoot. Ce sont tous des instances d'objets d'opconstants, c'est-à-dire des instances d'objet. Il existe naturellement certaines méthodes ci-dessus. Par exemple, la méthode toString () est écrasée, ce qui vous permet d'obtenir directement la description de la chaîne de la valeur d'énumération. La méthode VALEUR () définie par l'objet Enum vous permet d'obtenir toutes les instances d'énumération et de les transmettre dans un tableau. Vous utilisez ces deux méthodes pour afficher simplement le contenu des opconstants:
ShowEnum.javapublic class showenum {public static void main (String [] args) {for (opConstants constant: opConstants.values ()) {System.out.println (constante.toString ()); }}} Fondamentalement, println () appellera automatiquement ToString (), il est donc acceptable de ne pas écrire ToString (). Le résultat de l'exécution est le suivant:
Turt_leftturn_righshoot
Vous pouvez utiliser la méthode "==" ou equals () pour comparer les objets Enum. "" == "" comparera si les objets en enhm que vous fournissez sont les mêmes (c'est-à-dire occupant le même emplacement de mémoire), tandis que Equals () comparera essentiellement le contenu de deux objets Enum. Par défaut, il sera comparé en fonction de la valeur de chaîne de l'énumération.
La méthode Value Of () vous permet d'essayer de convertir la chaîne spécifiée en une instance d'énumération. Vous pouvez utiliser la méthode compareto (), qui peut comparer l'ordre des deux objets ENUM lors de l'énumération. Voici un exemple
Showenum.javapublic class showenum {public static void main (String [] args) {enumCompareto (opconstants.valueof (args [0])); } public static void enumCompareto (opconstants constant) {System.out.println (constant); for (opConstants c: opConstants.values ()) {System.out.println (constant.compareto (c)); }}} Résultats de l'exécution:
$ Java Showenum Turn_Right
Turn_Right10-1
Passez une valeur positive, indiquant que l'ordre est avant que l'objet Enum ne soit comparé, une fois la valeur négative indiquée, et 0 signifie que les positions des deux valeurs d'énumération mutuellement comparatives sont les mêmes.
Pour chaque membre d'énumération, nous pouvons utiliser la méthode ordinale () pour obtenir l'index de position dans l'ordre d'énumération, et la valeur par défaut commence par 0, par exemple:
Showenum.javapublic class showenum {public static void main (String [] args) {for (opConstants c: opConstants.values ()) {System.out.printf ("% d% s% n", c.oralal (), c); }}} Résultats de l'exécution:
0 Turn_left1 Turn_Right2 Shoot
Le mot-clé enum peut être utilisé pour définir une classe d'énumération, et les constantes pertinentes peuvent être écrites dans une classe. Jetons un coup d'œil à un exemple ci-dessous.
Le code suivant:
classe TestClass {private testClass () {} // définir un constructeur privé, et ne peut pas instancier un objet de l'extérieur // fournir deux instances A et B publique statique final TestClass a = new TestClass (); Public Static Final TestClass B = new TestClass ();}Vous pouvez plutôt utiliser des types d'énumération:
Enum TestClass01 {a, b;}usage:
Une énumération peut également avoir des constructeurs, des champs et des méthodes:
enum testclass02 {a ("a") // Lors de la création d'un objet, passez dans les paramètres du constructeur, b ("b"); valeur de chaîne privée; Private TestClass02 (String Value) {this.value = valeur; } public String getValue () {return this.value; }}Les énumérations peuvent également avoir des méthodes abstraites:
enum testclass03 {a () {// implémenter la méthode abstraite public void type () {System.out.println ("excellent"); }}, B () {public void type () {System.out.println ("bon"); }}; Public Abstract Void Type (); // Définir la méthode abstraite}Méthode de test:
classe publique test02 {public static void main (String [] args) {print (testclass02.a); // pause dans les paramètres de l'énume} public static void print (testclass02 t) {system.out.println (t.getValue ()); } enum testclass02 {a ("a"), b ("b"); valeur de chaîne privée; Private TestClass02 (String Value) {this.value = valeur; } public String getValue () {return this.value; }}}Résultats en cours:
Aauthor: Démarrer le signe: tant que vous essayez toujours, ce n'est pas un échec.