我有三个枚举类。我想以某种方式将它们放在一个数组中,循环遍历数组并在每个枚举类中调用相同的方法。这在Java中可行吗?
在我看来,你不能在数组结构中放置枚举类型(除非我错过了)。
谢谢。
答案 0 :(得分:4)
让每个枚举类型实现一个公共接口,它具有您想要调用的公共方法。现在,您可以在迭代时将每个枚举转换为此公共接口并调用该方法。另请查看EnumSet
答案 1 :(得分:2)
这是一个包含2个枚举并使用反射的示例:
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);
}
}
答案 2 :(得分:1)
如果,通过枚举类,您指的是三个不同的枚举,每个枚举都有自己的元素,那么您可以使用类型为Enum[]
的数组。如果你的意思是单个枚举中的三个项目,我们称之为enum X
,然后你将它们放在X[]
类型的数组中。
如果您尝试在每个上调用标准枚举功能,那么您应该全部设置。如果你需要在它们上面调用自己的函数,并使用Enum[]
数组,你需要使用反射或让它们都实现相同的接口。