Я довольно новичок в Java, и я привык к тому, что перечисления по сути не более чем именованный список целых чисел.
Теперь я пишу реализацию, в которой у родительского класса есть пара методов, которые принимают значение enum в качестве аргумента. Перечисление будет определено в дочерних классах и будет немного отличаться. Поскольку перечисления в основном ведут себя как классы, это не работает так, как я ожидал. Каждое определенное перечисление будет рассматриваться как объект другого типа, и родительский класс должен будет выбрать одно из определенных перечислений, чтобы принять их в качестве аргумента.
Есть ли хороший способ заставить родительский класс принимать любое перечисление, определенное в его дочерних классах? Или мне придется написать собственный класс для этого?
Редактировать: Вот мой пример, исправленный в соответствии с ответом Джона Скитса, для всех, кто ищет, как это сделать позже:
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);
}
}