我有三個枚舉類。我想以某種方式將它們放在數組中,循環訪問數組並在每個枚舉類中調用相同的方法。這在Java中可能嗎?是否可以遍歷幾個枚舉類?
在我看來,你不能將枚舉類型放在數組結構中(除非我錯過了)。
謝謝。
我有三個枚舉類。我想以某種方式將它們放在數組中,循環訪問數組並在每個枚舉類中調用相同的方法。這在Java中可能嗎?是否可以遍歷幾個枚舉類?
在我看來,你不能將枚舉類型放在數組結構中(除非我錯過了)。
謝謝。
讓每一個枚舉類型實施通用接口具有您要到調用常用的方法。您現在可以將每個枚舉轉換爲此公共接口並調用該方法。也看看EnumSet
我確實嘗試了通用接口路由,但在我的情況下無法正常工作。我在我需要調用的枚舉類中有靜態方法。 – user649716 2011-03-18 16:30:48
@ user649716讓普通方法實現調用每個枚舉類型中的靜態方法 – 2011-03-18 16:32:00
><我沒有想到這個笑話。我會放棄它,謝謝。 – user649716 2011-03-18 16:35:55
如果通過枚舉類,你的意思是三個不同的枚舉,每個枚舉都有自己的元素,那麼你可以使用一個Enum[]
類型的數組。如果你的意思是來自單枚枚舉的三項,我們稱之爲enum X
,然後你將它們放入一個X[]
類型的數組中。
如果您試圖在每個函數上調用一個標準枚舉函數,那麼您應該全部設置。如果你需要調用你自己的函數,並且使用Enum[]
數組,你需要使用反射或者讓它們全部實現相同的接口。
這不適用於我的情況。我有三個獨立的枚舉類。我不能將它們放在Enum []中,因爲它們無法解析爲變量 - 或者被初始化。 – user649716 2011-03-18 16:33:05
這裏是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);
}
}
啊,太棒了。這似乎正是我需要的。我會試試這個並報告回來 - 謝謝。 – user649716 2011-03-18 16:40:29
呃。如果你沒有枚舉實現一個接口並完全避免反射? – 2011-03-18 17:03:47
這工作完美。我確實嘗試了接口路由,但是我遇到的問題是將枚舉獲取到數組中。 IE:enumInterface [] = {enum1,enum2}不起作用,因爲enum1/enum2是不可初始化的枚舉類。 – user649716 2011-03-18 17:27:17
什麼做你的意思是「將[enum classes]放入數組中?」方法是靜態的嗎?向我們展示您嘗試的代碼。 – 2011-03-18 16:28:55
Enum []或Object [],你可以放入任何東西,如果你需要一個通用的方法,只需定義一個接口。 – bestsss 2011-03-18 16:30:13