Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaのクラス内に列挙型(enum)を定義できますか?定義方法と実装例を解説

Javaの列挙型(enum)は、曜日や季節など、関連する名前付き定数の集まりを表現するための仕組みです。以下のような構文で列挙型を作成できます。

enum Days {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

はい、Javaではクラスの中に列挙型を定義することができます。クラスのメンバーとしてenumを宣言すれば、そのクラス専用の定数グループをひとまとめに管理でき、コードの可読性と保守性が向上します。

また、列挙型に含まれるすべての定数を取得したい場合は、values()メソッドを使用します。このメソッドは、enumの全定数を配列として返してくれます。

例1:クラス内にenumを定義して値を取得する

public class EnumerationExample {
    enum Enum {
        Mango, Banana, Orange, Grapes, Thursday, Apple
    }
    public static void main(String args[]) {
        Enum constants[] = Enum.values();
        System.out.println("Value of constants: ");
        for(Enum d: constants) {
            System.out.println(d);
        }
    }
}

実行結果

Value of constants:
Mango
Banana
Orange
Grapes
Thursday
Apple

例2:コンストラクタやメソッドを持つenum

列挙型は単なる定数の集合にとどまらず、インスタンス変数・コンストラクタ・メソッドを持つことも可能です。以下の例では、enum内にメソッドを定義し、特定の定数に対して呼び出しています。

enum Vehicles {
    // 列挙型の定数を宣言
    ACTIVA125, ACTIVA5G, ACCESS125, VESPA, TVSJUPITER;
    int i; // インスタンス変数
    Vehicles() { // コンストラクタ
    }
    public void enumMethod() { // メソッド
        System.out.println("Current value: "+Vehicles.this);
    }
}
public class Sam{
    public static void main(String args[]) {
        Vehicles vehicles[] = Vehicles.values();
        for(Vehicles veh: vehicles) {
            System.out.println(veh);
        }
        vehicles[3].enumMethod();
    }
}

実行結果

ACTIVA125
ACTIVA5G
ACCESS125
VESPA
TVSJUPITER
Current value: VESPA

まとめ

このように、Javaの列挙型はクラス内に定義できるだけでなく、フィールドやコンストラクタ、メソッドも持つことができるため、非常に柔軟な設計が可能です。特定のクラスでのみ使用する定数群は、そのクラス内にenumを定義することでスコープを限定でき、より整理された見通しの良いコードになります。

  1. Javaの列挙型(enum)は任意のクラスを拡張できる?継承の仕組みを解説

    Javaの列挙型(enum)とは列挙型(enum)は、Javaにおいて定数の集合を格納するためのデータ型です。1週間の曜日や1年の月名など、固定された値のグループを扱う際に活用されます。列挙型を定義するには、enumキーワードの後に列挙型の名前を続けて記述します。enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }配列と同様に、列挙型内の要素(定数)には0から始まる番号が自動的に割り当てられます。上記の例では、各曜日が以下の図のように番号で識別されます。列挙型はクラスとよく似た構造を持ち

  2. JavaでJTextFieldにパディングを追加する方法【setMarginの使い方】

    JTextFieldはJTextComponentクラスのサブクラスであり、ユーザーが1行形式でテキストを入力できる、Swingの中でも特に重要なコンポーネントの一つです。JTextFieldでは、ユーザーが入力を行う際にActionListenerインターフェースを通じてアクションイベントが発生します。主なメソッドとしては、setText()、getText()、setBorder()、setEnabled()などが挙げられます。 JTextFieldにパディング(内側の余白)を追加したい場合は、JTextComponentクラスが提供するsetMargin(Insets m)メソッドを使用