Тема: Як отримати екземпляр enum за значеннями його полів ?
Є в мене enum :
enum FlipRotate2dEnum {
    NO((byte)0),    None              ((byte)0),
    R2((byte)1),    RotateTwice       ((byte)1),
    FX((byte)2),    FlipX             ((byte)2),
    FY((byte)3),    FlipY             ((byte)3),
    D1((byte)4),    ReflectDiagonal1  ((byte)4),
    D2((byte)5),    ReflectDiagonal2  ((byte)5),
    RC((byte)6),    RotateClockwise   ((byte)6),
    RN((byte)7),    RotateNonClockwise((byte)7);
    public final byte value;
    FlipRotate2dEnum(byte value) { this.value = value; }
}Я хочу за значенням поля value отримати відповідний екземпляр FlipRotate2dEnum з короткою назвою.
Наприклад, код :
class EnumTest {
    public static void main(String[] args) {
        for(byte i = 0; i < 8; ++i) {
            FlipRotate2dEnum v = FlipRotate2dEnum.valueOf(i);  // або
        //  FlipRotate2dEnum v = (FlipRotate2dEnum)i;          // або ще щось такого типу.
            System.out.println(i + " " + v);
        }
    }
}має вивести в System.out :
0 NO
1 R2
2 FX
3 FY
4 D1
5 D2
6 RC
7 RNДля цього, як варіант, можна в FlipRotate2dEnum вставити код :
    static final FlipRotate2dEnum[] UniqueValues = { NO, R2, FX, FY, D1, D2, RC, RN };
    static FlipRotate2dEnum valueOf(byte value) { return UniqueValues[value]; }і він буде працювати. Але в мене якесь відчуття, що це не зовсім правильно.
Чи існує інше (гарніше) рішення ?