Java学習道路列挙クラス
概要概要
数学およびコンピュータサイエンス理論では、セットの列挙は、ある有限シーケンスセットのすべてのメンバー、または特定のタイプのオブジェクトの数を一覧表示するプログラムです。これらの2つのタイプはしばしば重複します。-ウィキペディア
列挙型はJava5の新機能の一部であり、特別なデータ型です。
その特別な機能は、それがクラス型であるが、通常のクラス型よりも特別な制約があることですが、これらの制約の存在は、列挙型の単純さ、安全性、および利便性も生み出します。
列挙クラスには次の特徴があります。
- 定義された
enum
型は常に継承されjava.lang.Enum
、継承することはできません。 - 定義
enum
することはできるnew
が、オペレーターが作成することはできないインスタンスenum
。 - 定義された各インスタンスは、参照型の唯一のインスタンスです。
- ステートメントには
enum
タイプを使用できますswitch
。
1つは、列挙型クラスを作成する
Javaプログラムでは、列挙クラス使用してenum
定義するキーワードを、定義された各種定数の間にカンマを使用し、分割します。
public class Demo {
public static void main(String[] args) {
System.out.println(Weekday.SUN);
}
}
enum Weekday {
SUN, MON, TUE, WED, THU, FRI, SAT;
}
2.一般的な操作
1.name()
方法
定数名の文字列形式を返します。
System.out.println(Weekday.SUN.name()); // SUN
2.ordinal()
方法
定数のインデックス値を返します。
列挙型クラスでは、各定数には配列のようなインデックス値があり、インデックス値は定数の位置に関連しています。定数の順序を変更する際のインデックス値も変更されます。
System.out.println(Weekday.SUN.ordinal()); // 0
3.valueOf()
方法
指定された文字列値の列挙定数を返します。
System.out.println(Weekday.valueOf("SUN")); // SUN
4.トラバース
for
ステートメントを実験して、列挙定数クラスをトラバースできます。
for (Weekday var : Weekday.values()) {
System.out.print(var + " ");
} // SUN MON TUE WED THU FRI SAT
5.switch
ステートメントで使用する
Scanner scan = new Scanner(System.in);
Weekday day = Weekday.valueOf(scan.nextLine());
switch (day) {
case SUN:
System.out.println("SUN");
break;
case MON:
System.out.println("MON");
break;
default:
System.out.println("Others");
}
3、高度な使用
列挙型クラスにはどのような種類の定数がありますか?
列挙型クラスの各定数は、実際には列挙型クラスのインスタンスです。
System.out.println(Weekday.SUN.getClass()); // class Weekday
すべての定数は列挙型クラスのインスタンスであるため、列挙型クラスで定義されたメソッドとプロパティもすべてのインスタンスに適用する必要があります。
public class Demo {
public static void main(String[] args) {
System.out.println(Weekday.SUN.getChinese()); // 星期天
}
}
enum Weekday {
SUN("星期天", 7), MON("星期一", 1), TUE("星期二", 2),
WED("星期bai三", 3), THU("星期四", 4), FRI("星期五", 5),
SAT("星期六", 6);
private String chinese;
private int day;
Weekday(String name , int day) {
this.chinese = name;
this.day = day;
}
public String getChinese() {
return chinese;
}
}
実行可能であることが判明したので、列挙型クラスにプロパティとメソッドを追加することで、定数の使用を拡張できます。