の Javaの列挙型 固定の定数セットを含むデータ型です。
曜日(日曜日、月曜日、火曜日、水曜日、木曜日、金曜日、土曜日)、方角(北、南、東、西)、季節(春、夏、冬、秋または秋)に使用できます。 )、色 (赤、黄、青、緑、白、黒) など。Java の命名規則に従って、すべての定数を大文字にする必要があります。したがって、enum 定数は大文字で表されます。
Java Enum は、固定の定数セット (変化しない変数) を持つクラスと考えることができます。 Java enum 定数は静的であり、暗黙的に最終的です。 JDK 1.5 以降で利用可能です。
Javaでのマージソート
列挙型は、クラスなどの独自のデータ型を作成するために使用されます。の 列挙型 データ型 (列挙型データ型とも呼ばれる) は、Java で列挙型を定義するために使用されます。 C/C++ とは異なり、Java の enum は 強力な 。ここでは、クラス内またはクラス外で列挙型を定義できます。
Java Enum は内部的に 列挙型クラス したがって、他のクラスを継承することはできませんが、多くのインターフェイスを実装できます。 Java enum にはフィールド、コンストラクター、メソッド、メイン メソッドを含めることができます。
Java Enumの注意点
- Enum は型の安全性を向上させます
- Enumはスイッチで簡単に使用できます
- 列挙型はトラバース可能
- Enum にはフィールド、コンストラクター、メソッドを含めることができます
- Enum は多くのインターフェイスを実装できますが、Enum クラスを内部的に拡張するため、クラスを拡張することはできません。
Java Enum の簡単な例
class EnumExample1{ //defining the enum inside the class public enum Season { WINTER, SPRING, SUMMER, FALL } //main method public static void main(String[] args) { //traversing the enum for (Season s : Season.values()) System.out.println(s); }}今すぐテストしてください
出力:
WINTER SPRING SUMMER FALL
Java enum の value()、valueOf()、および ordinal() メソッドを使用する Java enum の別の例を見てみましょう。
class EnumExample1{ //defining enum within class public enum Season { WINTER, SPRING, SUMMER, FALL } //creating the main method public static void main(String[] args) { //printing all enum for (Season s : Season.values()){ System.out.println(s); } System.out.println('Value of WINTER is: '+Season.valueOf('WINTER')); System.out.println('Index of WINTER is: '+Season.valueOf('WINTER').ordinal()); System.out.println('Index of SUMMER is: '+Season.valueOf('SUMMER').ordinal()); }}
出力:
WINTER SPRING SUMMER FALL Value of WINTER is: WINTER Index of WINTER is: 0 Index of SUMMER is: 2
注: Java コンパイラは、コンパイル時に enum 内に value()、valueOf()、および ordinal() メソッドを内部的に追加します。内部的に列挙型の静的最終クラスを作成します。
enum の value() メソッドの目的は何ですか?
Java コンパイラは、列挙型を作成するときに内部で value() メソッドを追加します。 value() メソッドは、列挙型のすべての値を含む配列を返します。
enum の valueOf() メソッドの目的は何ですか?
Java コンパイラは、列挙型を作成するときに内部で valueOf() メソッドを追加します。 valueOf() メソッドは、指定された定数 enum の値を返します。
enum の ordinal() メソッドの目的は何ですか?
Java コンパイラは、列挙型を作成するときに内部で ordinal() メソッドを追加します。 ordinal() メソッドは、列挙値のインデックスを返します。
Java Enumの定義
enum はクラスに似ているため、クラス内またはクラス外で定義できます。 enum 定数の末尾のセミコロン (;) はオプションです。例えば:
enum Season { WINTER, SPRING, SUMMER, FALL }
または、
enum Season { WINTER, SPRING, SUMMER, FALL; }
Java enum の定義は両方とも同じです。
int parseint
Java Enum の例: クラス外で定義
enum Season { WINTER, SPRING, SUMMER, FALL } class EnumExample2{ public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); }}今すぐテストしてください
出力:
WINTER
Java Enum の例: クラス内で定義
class EnumExample3{ enum Season { WINTER, SPRING, SUMMER, FALL; }//semicolon(;) is optional here public static void main(String[] args) { Season s=Season.WINTER;//enum type is required to access WINTER System.out.println(s); }}今すぐテストしてください
出力:
WINTER
Java Enum の例: Enum 内の main メソッド
enum 内に main() メソッドを置くと、enum を直接実行できます。
enum Season { WINTER, SPRING, SUMMER, FALL; public static void main(String[] args) { Season s=Season.WINTER; System.out.println(s); } }
出力:
離散数学の否定
WINTER
特定の値を enum 定数に初期化する
enum 定数には、0、1、2、3 などから始まる初期値があります。ただし、フィールドとコンストラクターを定義することで、特定の値を enum 定数に初期化できます。前に指定したように、Enum にはフィールド、コンストラクター、およびメソッドを含めることができます。
enum定数に初期値を指定する例
class EnumExample4{ enum Season{ WINTER(5), SPRING(10), SUMMER(15), FALL(20); private int value; private Season(int value){ this.value=value; } } public static void main(String args[]){ for (Season s : Season.values()) System.out.println(s+' '+s.value); }}今すぐテストしてください
出力:
WINTER 5 SPRING 10 SUMMER 15 FALL 20
enum型のコンストラクタはプライベートです。 private コンパイラを宣言しない場合、内部で private コンストラクタが作成されます。
enum Season{ WINTER(10),SUMMER(20); private int value; Season(int value){ this.value=value; } }
上記の enum 型の例に対してコンパイラによって生成された内部コード
final class Season extends Enum { public static Season[] values() { return (Season[])$VALUES.clone(); } public static Season valueOf(String s) { return (Season)Enum.valueOf(Season, s); } private Season(String s, int i, int j) { super(s, i); value = j; } public static final Season WINTER; public static final Season SUMMER; private int value; private static final Season $VALUES[]; static { WINTER = new Season('WINTER', 0, 10); SUMMER = new Season('SUMMER', 1, 20); $VALUES = (new Season[] { WINTER, SUMMER }); } }
新しいキーワードでEnumのインスタンスを作成できますか?
いいえ、プライベート コンストラクターのみが含まれているためです。 |
Enum に抽象メソッドを含めることはできますか?
はい、もちろん!抽象メソッドを使用でき、これらのメソッドの実装を提供できます。
switch ステートメント内の Java Enum
与えられた例のように、switch ステートメントに enum を適用できます。
switch ステートメントに Enum を適用する例
class EnumExample5{ enum Day{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY} public static void main(String args[]){ Day day=Day.MONDAY; switch(day){ case SUNDAY: System.out.println('sunday'); break; case MONDAY: System.out.println('monday'); break; default: System.out.println('other day'); } }}今すぐテストしてください
出力:
monday