我想用兩個簡單的方法創建一個類 - 第一個註冊需要處理的類型。第二個將處理所有已註冊的類型。我得到的問題是,我想註冊/過程的類有一定的限制 - 他們必須是實現和接口的枚舉Java:如何定義一個實現接口的枚舉集合
我不能完全解決如何定義將用於存儲的集合註冊類型。我的代碼的簡化版本是:
public class Example {
interface MyType {
// Add methods here
}
private List<what-goes-here?> store = new ArrayList<>();
public <T extends Enum<?> & MyType> void registerType(@Nonnull Class<T> type) {
store.add(type);
}
public void processAll() {
for (T t : store) { // Where do I define T?
// process t
}
}
}
您的代碼不一致。在'register'中,你正在將'Class'對象存儲到列表中,在'processAll'中,你期望'T'實例出來。除此之外,爲什麼這些對象是'enum's很重要?似乎沒有對該財產的任何依賴,很難想象它將如何成爲一個有用的財產。 – Holger
@Holger嗨,我想他想處理所有枚舉常量實例。 –
@ holi-java提問者不應該要求我們猜測他們的意圖。可能有很多更好的解決方案,具體取決於他們實際想要做的事情。 – Holger