logo

Java 列挙型

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 ポイント

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