我对Java还比较新,通常枚举类型只是一组命名的整数列表。现在我正在编写一个实现,其中父类有几个方法需要将枚举值作为参数。枚举将在子类中定义,并且会略有不同。由于枚举基本上表现得像类,所以它并不能按照我的预期工作。每个定义的枚举将被认为是不同类型的对象,父类将必须选择一个定义的枚举作为参数。
有没有好的方法使父类接受在其子类中定义的任何枚举?或者我必须编写一个自定义类来实现这个功能?
编辑:这是我的示例,根据Jon Skeets的答案进行了修正,供稍后查看如何执行此操作的任何人使用:
class Parent {
protected interface ParentEvent {}
private HashMap<ParentEvent, String> actions = new HashMap<ParentEvent, String>();
protected void doStuff(ParentEvent e){
if(actions.containsKey(e)){
System.out.println(actions.get(e));
}
}
}
class Child extends Parent {
enum Event implements ParentEvent {EDITED, ADDED, REMOVED}
public void trigger(){
doStuff(Event.REMOVED);
}
}