Cómo usar enumeración con agrupación y subgrupos jerarquía / anidamiento

tengo unoenum 'clase' llamadaExample como sigue:

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

Es importante para mi proyecto, todos los enumerados con los que trabajo pertenecen.Example (ya que este es un argumento en un constructor de una clase).

Como usoenum jerarquía / anidamiento para lograr lo siguiente:

Un método que prueba si unenum Es del grupo A, B o C. Por ejemplo, algo comoExample.enumA1.isGroupBelonging(Group.A) oisGroupBelonging(Example.enumA1,Group.A) Sería un método público que devuelve verdadero.

Ser capaz de hacer lo mismo con subgrupos de grupo.A, B yC. Por ejemplo, el grupo A podría tener subgruposa, b yc. Entonces quiero un método que haga algo comoExample.enumA1.isSubGroupBelonging(SubGroup.a) el cual es unpublic boolean.

Una forma de hacer todo esto sin necesidad de tener algunos elaborados.enum Nombre que obstruye mi código. Por ejemplo, sería bueno poder referirse aExample.enumA1 a lo largo de mis otras clases sin necesidad de referirme a él usando algo comoExample.enumA1(Group.A,SubGroup.a) oExample.enumA1.Group.A.SubGroup.a

Respuestas a la pregunta(3)

Su respuesta a la pregunta