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; }