enum の正式名は enumeration で、JDK 5 で導入された新機能であり、java.lang パッケージに格納されています。この記事では、Java の列挙に関する知識を紹介します。必要な方は参照してください。enum の正式名は enumeration で、JDK 5 で導入された新機能であり、java.lang パッケージに格納されています。
オリジナルのインターフェース定義定数public interface IConstants {
String MON = "Mon";
String TUE = "Tue";
String WED = "Wed";
String THU = "Thu";
String FRI = "Fri";
String SAT = "Sat";
String SUN = "Sun";
}
enum キーワードを使用して列挙型を作成します。これは、作成された型が java.lang.Enum クラス (java .lang. Enum は抽象クラスです)。列挙型は、一般的なパターン Class Enum
package com.bjpowernode.test; /** * 枚举测试类 */ public enum EnumTest { MON, TUE, WED, THU, FRI, SAT, SUN; }
このコードは実際に Enum (String name, int ordinal) を 7 回呼び出します:
new Enum<EnumTest>("MON",0); new Enum<EnumTest>("TUE",1); new Enum<EnumTest>("WED",2); ... ...
enum のトラバースとスイッチのサンプル コード:
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
火水
木
金
土
SUN
---------------私は仕切りです------------ ------
今日は火曜日です
列挙オブジェクトの一般的なメソッドの紹介int compareTo(E o)
Class<E> getDeclaringClass()
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()); } }
getDeclaringClass(): com.hmw.test.EnumTest name(): TUE toString(): TUE ordinal(): 1
enumのプロパティとメソッドをカスタマイズ
enumオブジェクトにvalue属性とgetValue()メソッドを追加:package com.bjpowernode.test; /** * 枚举测试类 * */ 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,EnumMap 的应用 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()); } } }
enumの構文構造はclassの構文とは異なりますが、コンパイラによってコンパイルされた後、クラスファイルが生成されます。このクラス ファイルを逆コンパイルすると、java.lang.Enum
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); }
概要
enum は通常のクラスと考えることができますが、これらはすべていくつかのプロパティとメソッドを定義できます。 違いは、enum は java.lang .Enum を継承しているため、extends キーワードを使用して他のクラスを継承できないことです。 (Java は単一継承です)。以上がJava 列挙_Power ノードの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。