Возможно ли, чтобы сигнатура метода была подтипом интерфейса, который он реализует? - PullRequest
0 голосов
/ 25 сентября 2019

Скажем, у меня есть интерфейс:

public interface IDto {
}

и класс, который реализует этот интерфейс:

public class UserProfileResponseDto implements IDto {
}

В другом интерфейсе у меня есть:

public interface ISortingController {
    public List<IDto> findAll();
}

В моем конкретном контроллере у меня есть:

public List<UserProfileResponseDto> findAll();

, но он говорит мне, что это должно быть

public List<IDto> findAll();

Есть ли способ, который позволил бы public List<UserProfileResponseDto> findAll(); так, как это должно бытьразрешено, поскольку UserProfileResponseDto реализует IDto.Причина, по которой я задаю этот вопрос, заключается в том, что я чувствую, что он дает больше подробностей классу контроллера, что облегчит его обслуживание и работу.

1 Ответ

3 голосов
/ 25 сентября 2019

Вам необходимо объявить параметр типа в вашем ISortingController следующим образом:

public interface ISortingController<D extends IDto> {
    public List<D> findAll();
}

, и ваша реализация контроллера должна сказать implements ISortingController< UserProfileResponseDto>.

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