Javaでforループを使用して列挙型(enum)の値を反復処理する方法
Javaの列挙型(enum)は、あらかじめ定義された名前付き定数の集まりを表します。曜日や車種など、取りうる値が限定されるデータを扱う際に非常に便利です。列挙型は以下の構文で定義できます。
enum Days {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}values()メソッドでenumの値を取得する
列挙型に用意されている values() メソッドを呼び出すと、そのenumが持つすべての定数を格納した配列を取得できます。この配列を取得できれば、拡張forループ(for-eachループ)を使って各要素を順番に処理することが可能です。
サンプルコード1:基本的な反復処理
public class IterateEnum{
public static void main(String args[]) {
Days days[] = Days.values();
System.out.println("enumの内容は次のとおりです:");
// forループでenumを反復処理
for(Days day: days) {
System.out.println(day);
}
}
}実行結果
enumの内容は次のとおりです: SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY
このように、values() で取得した配列を拡張forループに渡すだけで、enumの全定数を簡単に順番に取り出せます。
サンプルコード2:フィールドやメソッドを持つenumの反復処理
列挙型は単なる定数の集合にとどまらず、インスタンス変数やコンストラクタ、メソッドを持つこともできます。そのようなenumでも、同じ方法で反復処理が可能です。
enum Vehicles {
// enumの定数を宣言
ACTIVA125, ACTIVA5G, ACCESS125, VESPA, TVSJUPITER;
int i; // インスタンス変数
Vehicles() { // コンストラクタ
}
public void enumMethod() { // メソッド
System.out.println("現在の値:"+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 現在の値:VESPA
まとめ
Javaでenumの値を反復処理する手順は非常にシンプルです。
① values() メソッドを呼び出して、すべての定数を含む配列を取得する。
② 拡張forループでその配列を順番に処理する。
また、enumにはインスタンス変数・コンストラクタ・メソッドを定義できるため、定数ごとに振る舞いを持たせる設計も可能です。反復処理と組み合わせれば、定義済みの選択肢をすべて表示したり、特定の定数に対して個別の処理を実行したりといった実装が容易になります。
-
【Java】OpenCVライブラリを使って画像のコントラストを変更する方法
画像の明るさやコントラストの増減は、画像のピクセル値を変換することで実現できます。この変換は、次のような数式で表されます。g(i, j) = α ・ f(i, j) + βここで、各要素の意味は以下のとおりです。(i, j):ピクセルの位置(座標)α(ゲイン)と β(バイアス):変換のパラメータ一般に、ゲインパラメータ α が画像のコントラストを制御し、バイアスパラメータ β が画像の明るさを制御します。convertTo() メソッドについてorg.opencv.core.Mat クラスの convertTo() メソッドを使うと、指定した行列に対して必要な計算を実行し、画像のコントラストや
-
JavaでJsonPointerインターフェースを使用してJSONのキーの値を取得する方法
JSONPointerは、JSONドキュメント内の特定のキーの値へアクセスするための文字列構文を定義した標準規格です。Jsonクラスの静的ファクトリメソッドであるcreatePointer()を呼び出すことで、JSONPointerのインスタンスを生成できます。JSONPointerでは、すべての文字列構文がスラッシュ「/」で始まるのが特徴です。キーの値を取得するには、JSONPointerオブジェクトに対してgetValue()メソッドを呼び出します。 前提条件 この記事のコードを実行するには、Java EE / Jakarta EEに含まれるJSON Processing(JSON-P)の