Я хочу вложить некоторые перечисления. Объект, который я представляю, - это флаги с типом и значением. Существует дискретное число типов, и каждый тип имеет различный набор возможных значений.
Итак, если тип A может иметь значения 1, 2 или 3, а тип B может иметь значения 4,5,6, я хотел бы иметь возможность делать такие вещи, как:
Flag f = Flag.A.1;
f.getType() - returns "A"
f.getValue() - returns "1"
Flag f2 = Flag.A.4; -- Syntax error.
Я с ума сошел, пытаясь вложить enums в enums - это то, что я пытаюсь сделать - мне нужно полностью перерезать enums и вручную статический класс со статическими членами?
Мое лучшее усилие до сих пор:
public class Flag {
enum A extends Flag {
ONE("ONE"),
TWO("TWO"),
THREE("THREE");
private A(String value) {
Flag.type = "A";
Flag.value = value;
}
}
private static String type;
private static String value;
}
Но если я это сделаю:
Flag f = Flag.A.ONE;
Типы несовместимы.