Вот пример с двумя перечислениями и использованием отражения:
enum Colour{
RED,
BLUE,
GREEN;
public void foo(){
System.out.println("COLOUR");
}
}
enum Fruit {
APPLE,
BANANA,
PEAR;
public void foo(){
System.out.println("FRUIT");
}
}
Вы можете поместить классы в массив и использовать отражение для вызова метода для каждой константы перечисления:
//create an array
Class[] arr = new Class[2];
arr[0] = Colour.class;
arr[1] = Fruit.class;
//call the foo method
for(Class c : arr){
Method m = c.getMethod("foo", null);
for(Object o : c.getEnumConstants()){
System.out.println("Invoking foo on:" + o);
m.invoke(o, null);
}
}