У меня есть один enum 'класс', называемый Example следующим образом:
enum Example {
//enums belonging to group A:
enumA1,
enumA2,
enumA3,
//enums belonging to group B:
enumB1,
enumB2,
enumB3,
//enums belonging to group C:
enumC1,
enumC2,
enumC3;
}
Для моего проекта важно, чтобы все перечисления, с которыми я работаю, принадлежат Example (так как это аргумент в конструкторе класса).
Как использовать иерархию/вложенность enum для достижения следующего:
-
Метод, который проверяет, является ли
enumгруппой A, B или C. Например, что-то вродеExample.enumA1.isGroupBelonging(Group.A)илиisGroupBelonging(Example.enumA1,Group.A)будет публичным методом, который возвращает true. -
Уметь делать то же самое с подгруппами группы
A,BиC. Например, группа А может иметь подгруппыA,BиC. Затем мне нужен метод, который делает что-то вродеExample.enumA1.isSubGroupBelonging(SubGroup.a), который являетсяpublic boolean. -
Способ сделать все это без необходимости иметь сложное имя
enum, которое забивает мой код. Например, было бы неплохо просто иметь возможность ссылаться наExample.enumA1на всех моих других классах, не обращаясь к нему, используя что-то вродеExample.enumA1(Group.A,SubGroup.a)илиExample.enumA1.Group.A.SubGroup.a