我想用两个简单的方法创建一个类 - 第一个注册需要处理的类型。第二个将处理所有已注册的类型。我得到的问题是,我想注册/过程的类有一定的限制 - 他们必须是实现和接口的枚举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