Есть ли преимущество в обобщенном интерфейсе? - PullRequest
3 голосов
/ 09 февраля 2011

Недавно в ответе мне было предложено, что это:

public interface Operation<R extends OperationResult, P extends OperationParam> {

    public R execute(P param);
}

Лучше, чем это:

public interface Operation {

    public OperationResult execute(OperationParam param);
}

Однако я не вижу никакой выгоды в использовании первого блока кода по сравнению со вторым ...

Учитывая, что и OperationResult, и OperationParam являются интерфейсами, разработчик должен в любом случае возвращать производный класс, и это кажется мне совершенно очевидным.

Так вы видите какую-либо причину использования первого блока кода над вторым?

1 Ответ

6 голосов
/ 09 февраля 2011

Таким образом, вы можете объявить свои Operation реализации, чтобы получить более конкретный результат, например,

 class SumOperation implements Operation<SumResult, SumParam>

Хотя имеет ли это какое-то значение для вашего приложения, полностью зависит от ситуации.

Обновление: Конечно, вы можете вернуть более конкретный результат, не имея общего интерфейса, но таким образом вы также можете ограничить входные параметры.

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