Да, вы можете определить abstract
методы в объявлении enum
тогда и только тогда, когда все значения перечисления имеют тела пользовательских классов с реализациями этих методов (т.е. ни одно конкретное значение перечисления может не иметь реализация).
public enum Foo {
BAR {
public void frobnicate() {
// do BAR stuff
}
},
BAZ {
public void frobnicate() {
// do BAZ stuff
}
};
public abstract void frobnicate();
}