尝试编译时出现此错误:
Iterables类型中的方法filter(Iterable<T>, Predicate<? super T>)
不适用于参数(Iterator<PeopleSoftBalance>, ColumnLikePredicate<PeopleSoftBalance>
)
这是ColumnLikePredicate类sig:
public class ColumnLikePredicate<T extends RowModel> implements Predicate<T>
我做错了什么?
答案 0 :(得分:14)
听起来您正在将Iterator
传递给期望Iterable
的方法。
集合上的迭代器
实现此接口允许对象成为“foreach”语句的目标。
Iterator
是一个可用于迭代(不同)集合的对象。 Iterable
是一个可以通过迭代的对象。
我猜你有某种collection
而你正在调用类似Iterables.filter(collection.iterator(), predicate)
的东西。 Iterables
类希望您传递Iterable本身,例如:
Iterables.filter(collection, predicate)
答案 1 :(得分:3)
请注意,Guava包含Iterators.filter()和Iterables.filter()方法。调用第一种方法来过滤Iterator,第二种方法来过滤Iterable。
答案 2 :(得分:0)
PeopleSoftBalance是否扩展了RowModel?