Java:Enumのordinal値に対する操作を一般化する
多くのEnumクラスを扱う場合に、そのordinalというint値への操作を一般化したい。
つまり、intとEnumクラスが与えられた場合に、Enumクラスの列挙子として返し、逆にEnumクラスの列挙子をintとして返したいのだ。
使ったことがなかったのだが、これは非常に簡単だった。これを行うユニットテストを示す。
import static org.junit.Assert.*;
import org.junit.*;
public class EnumTest {
public static enum UserLevel {
NONE,
USER,
ADMIN,
DEVEL;
}
@Test
public void test() {
assertEquals(UserLevel.ADMIN, getEnumerator(UserLevel.class, 2));
assertEquals(2, getOrdinal(UserLevel.ADMIN));
}
<T extends Enum<T>>T getEnumerator(Class<T>clazz, int ordinal) {
return clazz.getEnumConstants()[ordinal];
}
<T extends Enum<T>>int getOrdinal(T value) {
return value.ordinal();
}
}
ディスカッション
コメント一覧
まだ、コメントがありません