enumはswitch文にも使えるし、ぱっと見でも何を表しているかわかるし、switch文のためにわざわざ定数をたくさん定義しなくてもよくなるので積極的に使っていきたいと思っていたのだが、データの永続化を行おうとすると、数値で保存する必要があるので、ordinal()を使って数値化していた。
しかし、数値からenumに戻す方法がわからなかったので、ググってみたら、よさげな方法があったので、それを載せておく。
public enum MultiMode { NONE, ENABLE, DISABLE; public static MultiMode valueOf(final int value) { for(MultiMode m : EnumSet.allOf(MultiMode.class)) { if(m.ordinal() == value) { return m; } } return null; } }
valueOfメソッドをオーバーロードして、intからenumを返すように定義してみた。
enumに定義されている値と総当たりでチェックしていって、該当した時点でreturnしている。
もっといい方法があるのかもしれないけれど、自分的にはこれでいいかなという印象。