【发布时间】:2009-03-27 19:22:01
【问题描述】:
我对 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);
}
}
【问题讨论】:
-
我真的不明白你想要做什么(或为什么)。你能详细说明吗?也许让例子更具体?