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

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

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

Class#getEnumConstants() を用います。

  /**
   * 指定された序数の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… という例外となる。場面に依っては便利だが、例外処理を避けたい場合には次の汎用メソッドを用いる。

  /**
   * 指定された定数名の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;
  }

コメントを残す

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