Наследование перечислений Java: возможно ли каким-то образом извлечь метод toString () перечислений в общий суперкласс / enum? - PullRequest
3 голосов
/ 29 июля 2011

У меня есть 4 разных класса с общим суперклассом с именем WebService, в каждом из которых объявлены следующие перечисления (с разными значениями):

public class GeoPlacesService extends WebService {

public enum RequestParam {
    LOCATION, RADIUS, SENSOR, KEY;

    @Override
    public String toString() {
       return super.toString().toLowerCase();
    }
}

public enum ResponseParam {
    STATUS, LATITUDE, LONGITUDE, NAME;

    @Override
    public String toString() {
       return super.toString().toLowerCase();
    }
}
}

Можно ли каким-то образом извлечь перечисления toString() метод общего суперкласса / enum?Прямо сейчас я должен дублировать toString () 8 раз для каждого перечисления ...

Ответы [ 3 ]

2 голосов
/ 29 июля 2011

Как отмечают другие, вы не можете иметь перечисления, наследуемые от общего класса. Если вы делаете что-то более сложное, чем показано в примере кода, то у вас может быть какая-то вспомогательная функция, которая где-то статична, которая принимает перечисление и выполняет вычисления. Enums МОЖЕТ реализовать интерфейс, так что вы можете обрабатывать сложные общие строки toString таким образом.

1 голос
/ 29 июля 2011

Перечисления являются окончательными и также не могут наследоваться ни от чего, поэтому нет.Лучшее, что вы можете сделать, это переопределить toString () и делегировать общую реализацию «to-stringer», чтобы вам не приходилось писать фактическую реализацию снова и снова.

0 голосов
/ 29 июля 2011

Поскольку enum не имеет доступной модели наследования, вы не можете ничего расширить с вашего класса enum, и, следовательно, ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...