Просто чтобы немного расширить ответ Сауа ...
В Java 5 метод был объявлен как:
invokeAll(Collection<Callable<T>> tasks)
В Java 6 метод объявлен как:
invokeAll(Collection<? extends Callable<T>> tasks)
Разница в подстановочных знаках очень важна, потому что List<DocFeeder>
это a Collection<? extends Callable<T>>
, но не a Collection<Callable<T>>
Посмотрите, что произойдет с этим методом:
public void addSomething(Collection<Callable<Boolean>> collection)
{
collection.add(new SomeCallable<Boolean>());
}
Это законно - но явно плохо, если вы можете позвонить addSomething
с List<DocFeeder>
, так как он попытается добавить не-DocFeeder в список.
Итак, если вы застряли с Java 5, вам нужно создать List<Callable<Boolean>>
из вашего List<DocFeeder>
.