У меня есть структура данных, которая включает вложенные перечисления, так что я мог бы сделать что-то вроде следующего:
Drink.COFFEE.getGroupName();
Drink.COFFEE.COLUMBIAN.getLabel();
И если были объявления методов:
someMethod(Drink type)
someOtherMethod(DrinkTypeInterface type)
Тогда я мог бы сказать (соответственно):
someMethod(Drink.COFFEE)
someOtherMethod(Drink.COFFEE.COLUMBIAN)
Вот что я придумал:
public enum Drink {
COFFEE("Coffee");
private String groupName;
private Drink(String groupName) {
this.groupName = groupName;
}
public enum Coffee implements DrinkTypeInterface {
COLUMBIAN("Columbian Blend"),
ETHIOPIAN("Ethiopian Blend");
private String label;
private Coffee(String label) {
this.label = label;
}
public String getLabel() {
return this.label;
}
}
String getGroupName() {
return this.groupName;
}
}
И интерфейс:
public interface DrinkTypeInterface {
public String getLabel();
}
Я думаю, что я просто пытаюсь оборачивать голову тем, что лучший способ сделать это в Java, или если мне нужно написать кучу if-statement для работы с отдельным Drink.values (). Любая помощь?