谷歌番石榴和我无法弄清楚的错误

时间:2010-08-11 02:18:32

标签: java guava

尝试编译时出现此错误:

Iterables类型中的方法filter(Iterable<T>, Predicate<? super T>)不适用于参数(Iterator<PeopleSoftBalance>, ColumnLikePredicate<PeopleSoftBalance>

这是ColumnLikePredicate类sig:

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

我做错了什么?

3 个答案:

答案 0 :(得分:14)

听起来您正在将Iterator传递给期望Iterable的方法。

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?