Java - переопределение проблемы с наследованием метода [duplicate]

У меня есть следующая проблема с наследованием в объектах:

-Первый класс:

public class LegalPersonRest extends LegalPerson {}

-Второй класс:

public class Company {

private List<LegalPerson> legalPersons;

}

-Третий класс:

public class CompanyRest extends Company {

@Override
public List<LegalPersonRest> getLegalPersons() {
    return super.getLegalPersons();
}

}

В этом методе getLegalPersons я получил ошибку: попытка использовать несовместимый тип возвращаемого значения.

Я не знаю почему, если LegalPersonRest расширяет LegalPerson.

Классы Company и LegalPerson - мой домен. (домен слоя)

Классы CompanyRest и LegalPersonRest расширяют классы домена. (слой адаптера)

Если я изменю Список на Список, я думаю, что это неправильно, потому что мне нужно использовать LegalPersonRest.

Какова правильная форма наследования для этого случая?

С Уважением,

Всего 1 ответ


Я просто собираюсь указать на случай, если это было проблемой: суперкласс должен иметь метод, который вы переопределяете. Company не имеет метода getLegalPersons() , поэтому вы не можете его переопределить. Но я думаю, что в Company есть getLegalPersone() потому что вы вызываете этот метод позже (пожалуйста, getLegalPersone() минимальный воспроизводимый пример ). Следующее, о чем я могу подумать, это то, что метод Company getLegalPersons() не возвращает List<LegalPersonRest> . Он может вернуть список чего-то другого или совсем другой объект. Пожалуйста, проверьте тип возврата, чтобы увидеть, является ли он тем же типом возврата, что и метод в CompanyRest .


Есть идеи?

10000