Cet article présente principalement des informations pertinentes sur l'utilisation détaillée d'enum en Java. J'espère que cet article pourra aider tout le monde à comprendre et à maîtriser l'utilisation d'enum en Java. Les amis dans le besoin peuvent s'y référer
Explication détaillée de la façon d'utiliser enum en java
Le nom complet d'enum est enumeration. Il s'agit d'une nouvelle fonctionnalité introduite dans JDK 1.5 et est stockée dans le package java.lang. Voici quelques-unes de mes expériences et un résumé de l'utilisation d'enum.Constantes de définition de l'interface originale
public interface IConstants { String MON = "Mon"; String TUE = "Tue"; String WED = "Wed"; String THU = "Thu"; String FRI = "Fri"; String SAT = "Sat"; String SUN = "Sun"; }
Syntaxe (définition)
Utilisez le mot-clé enum pour créer des types d'énumération, ce qui implique que les types créés sont des sous-classes de la classe java.lang.Enum (java.lang.Enum est une classe abstraite). Le type d'énumération est conforme au modèle général Class Enumpackage com.hmw.test; /** * 枚举测试类 * @author <a href="mailto:hemingwang0902@126.com" rel="external nofollow" rel="external nofollow" >何明旺</a> */ public enum EnumTest { MON, TUE, WED, THU, FRI, SAT, SUN; }
new Enum<EnumTest>("MON",0); new Enum<EnumTest>("TUE",1); new Enum<EnumTest>("WED",2); ... ...
Opérations courantes telles que le parcours et le changement
Exemple de code pour parcourir et changer d'énumérations :
public class Test { public static void main(String[] args) { for (EnumTest e : EnumTest.values()) { System.out.println(e.toString()); } System.out.println("----------------我是分隔线------------------"); EnumTest test = EnumTest.TUE; switch (test) { case MON: System.out.println("今天是星期一"); break; case TUE: System.out.println("今天是星期二"); break; // ... ... default: System.out.println(test); break; } } }
MON TUE WED THU FRI SAT SUN ----------------我是分隔线------------------ 今天是星期二
Introduction aux méthodes courantes des objets enum
int compareTo (E o)/** * Java学习交流QQ群:589809992 我们一起学Java! */ public class Test { public static void main(String[] args) { EnumTest test = EnumTest.TUE; //compareTo(E o) switch (test.compareTo(EnumTest.MON)) { case -1: System.out.println("TUE 在 MON 之前"); break; case 1: System.out.println("TUE 在 MON 之后"); break; default: System.out.println("TUE 与 MON 在同一位置"); break; } //getDeclaringClass() System.out.println("getDeclaringClass(): " + test.getDeclaringClass().getName()); //name() 和 toString() System.out.println("name(): " + test.name()); System.out.println("toString(): " + test.toString()); //ordinal(), 返回值是从 0 开始 System.out.println("ordinal(): " + test.ordinal()); } }
TUE 在 MON 之后 getDeclaringClass(): com.hmw.test.EnumTest name(): TUE toString(): TUE ordinal(): 1
Donner Attributs et méthodes personnalisés enum
Ajoutez l'attribut value et la méthode getValue() à l'objet enum :package com.hmw.test; /** * 枚举测试类 * * @author <a href="mailto:hemingwang0902@126.com" rel="external nofollow" rel="external nofollow" >何明旺</a> */ public enum EnumTest { MON(1), TUE(2), WED(3), THU(4), FRI(5), SAT(6) { @Override public boolean isRest() { return true; } }, SUN(0) { @Override public boolean isRest() { return true; } }; private int value; private EnumTest(int value) { this.value = value; } public int getValue() { return value; } public boolean isRest() { return false; } } public class Test { public static void main(String[] args) { System.out.println("EnumTest.FRI 的 value = " + EnumTest.FRI.getValue()); } }
EnumTest.FRI 的 value = 5
EnumSet, application EnumMap
/** * Java学习交流QQ群:589809992 我们一起学Java! */ public class Test { public static void main(String[] args) { // EnumSet的使用 EnumSet<EnumTest> weekSet = EnumSet.allOf(EnumTest.class); for (EnumTest day : weekSet) { System.out.println(day); } // EnumMap的使用 EnumMap<EnumTest, String> weekMap = new EnumMap(EnumTest.class); weekMap.put(EnumTest.MON, "星期一"); weekMap.put(EnumTest.TUE, "星期二"); // ... ... for (Iterator<Entry<EnumTest, String>> iter = weekMap.entrySet().iterator(); iter.hasNext();) { Entry<EnumTest, String> entry = iter.next(); System.out.println(entry.getKey().name() + ":" + entry.getValue()); } } }
Analyse des principes
Bien que la structure syntaxique d'enum soit différente de la syntaxe de class, un fichier de classe est généré après avoir été compilé par le compilateur. Après avoir décompilé le fichier de classe, vous pouvez voir qu'une classe est réellement générée, qui hérite de java.lang.Enum. Le contenu obtenu après décompilation d'EnumTest (commande javap com.hmw.test.EnumTest) est le suivant :public class com.hmw.test.EnumTest extends java.lang.Enum{ public static final com.hmw.test.EnumTest MON; public static final com.hmw.test.EnumTest TUE; public static final com.hmw.test.EnumTest WED; public static final com.hmw.test.EnumTest THU; public static final com.hmw.test.EnumTest FRI; public static final com.hmw.test.EnumTest SAT; public static final com.hmw.test.EnumTest SUN; static {}; public int getValue(); public boolean isRest(); public static com.hmw.test.EnumTest[] values(); public static com.hmw.test.EnumTest valueOf(java.lang.String); com.hmw.test.EnumTest(java.lang.String, int, int, com.hmw.test.EnumTest); }
Résumé
Vous pouvez considérer enum comme une classe ordinaire. Ils peuvent tous définir certaines propriétés et méthodes. La différence est la suivante : enum ne peut pas utiliser le mot-clé extends Inherit. d'autres classes, car enum a hérité de java.lang.Enum (java est un héritage unique).Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!