Google Guava и ошибка, которую я не могу понять - PullRequest
3 голосов
/ 11 августа 2010

Я получаю эту ошибку при попытке компиляции:

Метод filter(Iterable<T>, Predicate<? super T>) в типе Iterables не применим для аргументов (Iterator<PeopleSoftBalance>, ColumnLikePredicate<PeopleSoftBalance>)

Вот класс ColumnLikePredicate sig:

public class ColumnLikePredicate<T extends RowModel> implements Predicate<T>

Что я делаю не так?

Ответы [ 3 ]

14 голосов
/ 11 августа 2010

Звучит так, как будто вы передаете Iterator методу, который ожидает Iterable.

Итератор

Итератор над коллекцией

Iterable

Реализация этого интерфейса позволяет объекту быть целью оператора "foreach".

Iterator - это объект, который можно использовать для перебора (другой) коллекции. Iterable - это объект , который можно повторять по .

Я бы предположил, что у вас есть какой-то collection, и вы называете что-то вроде Iterables.filter(collection.iterator(), predicate) Класс Iterables хочет, чтобы вы передавали сам Iterable, например:

Iterables.filter(collection, predicate)
3 голосов
/ 12 августа 2010

Обратите внимание, что в Guava включены оба метода: Iterators.filter () и Iterables.filter () .Вызовите первый метод для фильтрации Iterator, а второй метод - для фильтрации Iterable.

0 голосов
/ 11 августа 2010

Расширяет ли PeopleSoftBalance RowModel?

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