Почему абстрактные частные методы не разрешены в перечислениях в java?

Разве не должно быть совершенно законным писать частные абстрактные методы в перечислениях? Есть ли причина запретить это, чего я не вижу?

Ниже приведен пример кода игрушки, который не компилируется; Предположим, я не хочу использовать какой-либо 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. Ответ на общий случай здесь неприменим.


person user2259824    schedule 25.06.2016    source источник
comment
Имейте в виду, что каждый член вашего перечисления является экземпляром своего собственного подтипа типа перечисления.   -  person Marko Topolnik    schedule 25.06.2016
comment
Тогда я не могу объявлять абстрактные методы в перечислениях, не передав их пакету, в котором находится перечисление. Разве эта ограничивающая информация не скрывается?   -  person user2259824    schedule 25.06.2016
comment
У системы типов Java есть много других ограничений, в этом нет ничего особенного.   -  person Marko Topolnik    schedule 25.06.2016
comment
Хорошо, это хороший ответ.   -  person user2259824    schedule 25.06.2016
comment
Вы не можете объявить абстрактные частные методы где угодно, не только в перечислениях. Их нельзя переопределить, поэтому они бессмысленны. То, что вы пытаетесь сделать, достигается путем определения их как защищенных.   -  person user207421    schedule 25.06.2016