Разве не должно быть совершенно законным писать частные абстрактные методы в перечислениях? Есть ли причина запретить это, чего я не вижу?
Ниже приведен пример кода игрушки, который не компилируется; Предположим, я не хочу использовать какой-либо api, кроме того, что синглтон является множественным или нет.
Обратите внимание, что это можно реализовать без абстрактных методов, но это всего лишь пример. Я спрашиваю, есть ли общая причина запретить это.
enum Count{
SINGLE {
private int howMany() {
return 1;
}
},
DOUBLE{
private int howMany() {
return 2;
}
};
private abstract int howMany();// !! this declaration is illegal
public boolean isMultiple(){
return this.howMany() > 1;
}
}
public static void main (String... args){
System.out.println(Arrays.toString(Count.values()));
for(Count s : Count.values()){
System.out.println(s.howMany() + " is " + (s.isMultiple() ? "many" : "one"));
}
}
edit1: Это не вопрос, почему частные абстрактные методы вообще запрещены. Я спрашиваю, почему его использование в перечислениях является незаконным, приводя пример того, что такое использование имеет смысл. Это не дубликат. Я не смог найти ответ в Stackoverflow. Ответ на общий случай здесь неприменим.