Enum (列挙型)に関する便利メソッド

【PR】当サイトはプロモーションが含まれています。

序数によるEnum定数(列挙子)の取得

Class#getEnumConstants() を用います。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/**
* 指定された序数のEnum定数を返します。
*
* @param enumClass Enumのクラス
* @param ordinal 序数
* @return Enum定数
*/
public static <E extends Enum<E>> E getEnumByOrdinal(Class<E> enumClass, int ordinal) {
E[] constants = enumClass.getEnumConstants();
return constants[ordinal];
}
/** * 指定された序数のEnum定数を返します。 * * @param enumClass Enumのクラス * @param ordinal 序数 * @return Enum定数 */ public static <E extends Enum<E>> E getEnumByOrdinal(Class<E> enumClass, int ordinal) { E[] constants = enumClass.getEnumConstants(); return constants[ordinal]; }
  /**
   * 指定された序数のEnum定数を返します。
   *
   * @param enumClass Enumのクラス
   * @param ordinal 序数
   * @return Enum定数
   */
  public static <E extends Enum<E>> E getEnumByOrdinal(Class<E> enumClass, int ordinal) {
    E[] constants = enumClass.getEnumConstants();
    return constants[ordinal];
  }

定数名によるEnum定数(列挙子)の取得

Enum(列挙型)において、Enum定数(列挙子)を定数名で取得する方法として valueOf メソッドが用意されているが、存在しない定数名を指定すると java.lang.IllegalArgumentException: No enum constant… という例外となる。場面に依っては便利だが、例外処理を避けたい場合には次の汎用メソッドを用いる。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/**
* 指定された定数名のEnum定数を返します。
*
* @param enumClass Enumのクラス
* @param name 定数名
* @return Enum定数 該当が無い場合は null
*/
public static <E extends Enum<E>> E getEnumByName(Class<E> enumClass, String name) {
for (E constant : enumClass.getEnumConstants()) {
if (constant.name().equals(name)) {
return constant;
}
}
return null;
}
/** * 指定された定数名のEnum定数を返します。 * * @param enumClass Enumのクラス * @param name 定数名 * @return Enum定数 該当が無い場合は null */ public static <E extends Enum<E>> E getEnumByName(Class<E> enumClass, String name) { for (E constant : enumClass.getEnumConstants()) { if (constant.name().equals(name)) { return constant; } } return null; }
  /**
   * 指定された定数名のEnum定数を返します。
   *
   * @param enumClass Enumのクラス
   * @param name 定数名
   * @return Enum定数 該当が無い場合は null
   */
  public static <E extends Enum<E>> E getEnumByName(Class<E> enumClass, String name) {
    for (E constant : enumClass.getEnumConstants()) {
      if (constant.name().equals(name)) {
        return constant;
      }
    }
    return null;
  }

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です