我怎樣纔能有一個抽象的枚舉,或某種基地枚舉?如何包裝Java枚舉並仍然遍歷它?
在我的通用代碼中,我想枚舉佔位符MyItems的概念,而不將自己綁定到具體的枚舉。然後在我的每個項目中,我都會有一個具體的實現。
E.g. 共同守則
public interface MyItems {
// Marker interface
}
項目A
public enum Items implements MyItems {
RED_CAR, BLUE_CAR, GREEN_CAR;
}
項目B
public enum Items implements MyItems {
BROWN_TREE, GREEN_TREE;
}
這似乎是工作,但在我的通用代碼,我不能寫在我的接口枚舉循環,因爲它不是枚舉。在我的公共代碼我想寫
for (MyItems item : MyItems.values())
doSomething(item);
但我不能,因爲我的接口只是一個標記接口,並且它不具有.values()。
任何建議非常感謝。我不知道我是否完全錯誤地嘗試。
感謝您的回答,我將學習並嘗試充分理解。要回答你的問題,我不認爲我很清楚。我的理想是能夠'注入'我想要使用的枚舉,這將在每個使用公共代碼的項目中改變。然後,我希望通用代碼能夠遍歷枚舉並執行一些操作。 – Pengin 2009-10-21 10:54:03
如果它需要能夠遍歷它,並且你想多形地做到這一點,你需要注入的是我的答案中顯示的工廠。這將允許您適當地迭代值。 – 2009-10-21 10:56:47