sando tipos de enumerações aninhadas em Ja

Tenho uma estrutura de dados em mente que envolve enumerações aninhadas, para que eu pudesse fazer algo como o seguinte:

Drink.COFFEE.getGroupName();
Drink.COFFEE.COLUMBIAN.getLabel();

E se houvesse declarações de método:

someMethod(Drink type)
someOtherMethod(DrinkTypeInterface type)

Então eu poderia dizer (apropriadamente):

someMethod(Drink.COFFEE)
someOtherMethod(Drink.COFFEE.COLUMBIAN)

Este foi o que eu vim com:

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;
    }
}

E a interface:

public interface DrinkTypeInterface {

    public String getLabel();
}

Acho que estou apenas tentando entender qual é a melhor maneira de fazer esse tipo de coisa em Java, ou se preciso escrever um monte de instruções if para lidar com os Drink.values () individuais. Qualquer ajuda

questionAnswers(4)

yourAnswerToTheQuestion