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を定義することでスコープを限定でき、より整理された見通しの良いコードになります。
-
Javaの列挙型(enum)は任意のクラスを拡張できる?継承の仕組みを解説
Javaの列挙型(enum)とは列挙型(enum)は、Javaにおいて定数の集合を格納するためのデータ型です。1週間の曜日や1年の月名など、固定された値のグループを扱う際に活用されます。列挙型を定義するには、enumキーワードの後に列挙型の名前を続けて記述します。enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }配列と同様に、列挙型内の要素(定数)には0から始まる番号が自動的に割り当てられます。上記の例では、各曜日が以下の図のように番号で識別されます。列挙型はクラスとよく似た構造を持ち
-
JavaでJTextFieldにパディングを追加する方法【setMarginの使い方】
JTextFieldはJTextComponentクラスのサブクラスであり、ユーザーが1行形式でテキストを入力できる、Swingの中でも特に重要なコンポーネントの一つです。JTextFieldでは、ユーザーが入力を行う際にActionListenerインターフェースを通じてアクションイベントが発生します。主なメソッドとしては、setText()、getText()、setBorder()、setEnabled()などが挙げられます。 JTextFieldにパディング(内側の余白)を追加したい場合は、JTextComponentクラスが提供するsetMargin(Insets m)メソッドを使用