| 著作一覧 |
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オリジンだから使えないや。