In den meisten Programmiersprachen sind Aufzählungstypen ein häufig verwendeter und wesentlicher Datentyp, und Java ist sicherlich keine Ausnahme. Der Aufzählungstyp Enum in Java hat jedoch viele unerwartete Verwendungsmöglichkeiten.
1. Sie können Variablen und Methoden in enum hinzufügen
Schauen wir uns zunächst ein Codebeispiel an:
public enum State { Normal("正常态", 1), Update("已更新", 2), Deleted("已删除", 3), Fired("已屏蔽", 4); // 成员变量 private String name; private int index; // 构造方法,注意:构造方法不能为public,因为enum并不可以被实例化 private State(String name, int index) { this.name = name; this.index = index; } // 普通方法 public static String getName(int index) { for (State c : State .values()) { if (c.getIndex() == index) { return c.name; } } return null; } // get set 方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } }
Aus dem obigen Code können wir erkennen, dass die Definition lautet Vervollständigen Sie den Aufzählungswert, fügen Sie danach ein Semikolon hinzu und definieren Sie dann andere Variablen und Methoden. Darüber hinaus ist zu beachten, dass der Konstruktor in enum nicht als öffentlich markiert werden kann. Dies soll verhindern, dass Benutzer enum instanziieren.
2. Kann zum Definieren von Konstanten verwendet werden
Sehen wir uns zunächst an, wie Konstanten in Java definiert werden:
public static final int normalState = 1; private static final int updateState = 2;
Als nächstes können wir Verwenden Sie auch die Aufzählung enum, um die obige Konstantendefinition zu ersetzen. Der Code lautet wie folgt:
public enum State { Normal, Update, Deleted, Fired }
Die Verwendung von enum zum Definieren von Konstanten in Java bietet keinen Syntaxvorteil, der Aufzählungstyp enum kann jedoch mehr bieten Betriebsfunktionen.
3. Implementieren Sie die Schnittstelle in enum
Schauen wir uns zunächst den folgenden Code an:
public interface ICanReadState { void read(); String getState(); } public enum State implements ICanReadState { Normal("正常态", 1), Update("已更新", 2), Deleted("已删除", 3), Fired("已屏蔽", 4); private String name; private int index; private State(String name, int index) { this.name = name; this.index = index; } // 接口方法1 @Override public String getState() { return this.name; } // 接口方法2 @Override public void read() { System.out.println(this.index + ":" + this.name); } }
Genau wie die Verwendung von Schnittstellen in allgemeinen Klassen können Sie auch diese verwenden Aufzählungen in Aufzählungen haben den Vorteil, dass die Werte in der Aufzählung einfacher sortiert und verglichen werden können und die Kapselung besser ist.
Zusammenfassung
Um es ganz klar auszudrücken: Der Aufzählungstyp „Enum“ ist eine letzte Klasse, die nicht vererbt werden kann. Betrachten Sie den Bytecode des Aufzählungstyps oben Tatsächlich handelt es sich um eine statische Klassenkonstante vom Typ State.