著作一覧 |
public enum Encho { Hee(1), Huu(2), Hoo(3); private final int value; Encho(int n) { value = n; } public int value() { return value; } } ... statement.setInt(1, Encho.Huu.value());で、ここまでは良いのだが、逆ができなくてしばらく悩む。
Encho e = (Encho)rs.getInt(1); // => errorそこでしょうがなく、自前変換メソッドを作ったが、本当にこんな方法しかないのかなぁ。
public enum Encho { Hee(1), Huu(2), Hoo(3); private final int value; Encho(int n) { value = n; } public int value() { return value; } public static Encho valueOf(int n) { for (Encho e : values()) { if (e.value == n) { return e; } } throw new IllegalArgumentException(n + " is not Encho"); } } ... Encho e = Encho.valueOf(rs.getInt(1));
ジェズイットを見習え |
あまり知られていないですが、<br>Enum -> int: hogeEnum.ordinal()<br>int -> Enum: HogeEnum.class.getEnumConstants()[value]<br>という方法があります。前者はともかく、後者はjava.lang.Classのメソッドなので気付かない人は一生気付かないかも。
おおお、ordinalですね。思い出しました。でも後者は気づいていませんでした。ありがとうございます。
ううむ、Enchoの例だと1オリジンだから使えないや。