Список исполнителей? - PullRequest
       22

Список исполнителей?

0 голосов
/ 12 октября 2011

У меня есть некоторые классы, которые реализуют один и тот же интерфейс Java, который по существу позволяет извлекать значения SQLite ContentValues, связанные с конкретным разработчиком, и эти классы группируются в списки в различных классах по всему моему приложению. Я надеялся использовать универсальные методы вставки списков для обработки любого из этих списков, в идеале в виде:

public void doSomething(List<? implements Interface) {
 ...
}

Тем не менее, дженерики / интерфейсы не работают таким образом. Теперь я могу сделать:

public void doSomething(List<? extends SuperClass) {
...
}

Если бы я сделал класс абстрактным (и установил методы по умолчанию, чтобы выбрасывать RunTimeExceptions для принудительной переопределения подклассами), это позволило бы выполнить, по сути, то же самое, только намного страшнее.

Это не является "критически важным" для всего, над чем я работаю, мне просто любопытно, есть ли более плавные способы выполнения определенных задач.

Ответы [ 2 ]

4 голосов
/ 12 октября 2011
public void doSomething(List<? extends Interface> list) {
 ...
}

с используемыми вами генериками расширяет даже для интерфейсов

2 голосов
/ 12 октября 2011

Разве вы не можете просто сделать

public void doSomething(List<? extends Interface> l) { ... }

Вы можете использовать extends в общей спецификации подстановочных знаков для интерфейсов, а также для классов.

...