3

コンパイルしようとすると、次のエラーが発生します。

タイプ Iterablesのメソッドfilter(Iterable<T>, Predicate<? super T>)は引数に適用できません ( Iterator<PeopleSoftBalance>, ColumnLikePredicate<PeopleSoftBalance>)

ColumnLikePredicate クラス sig は次のとおりです。

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

私は何を間違っていますか?

4

3 に答える 3

14

Iteratorを期待するメソッドに を渡しているようですIterable

イテレータ:

コレクションに対する反復子

反復可能:

このインターフェイスを実装すると、オブジェクトを「foreach」ステートメントのターゲットにすることができます。

Iterator(異なる)コレクションを反復処理するために使用できるオブジェクトです。は反復可能Iterableなオブジェクトです。

ある種の がcollectionあり、 のようなものを呼び出していると思いますIterables.filter(collection.iterator(), predicate)。このIterablesクラスでは、次のように Iterable 自体を渡す必要があります。

Iterables.filter(collection, predicate)
于 2010-08-11T02:26:39.233 に答える
3

Guava にはIterators.filter()Iterables.filter()メソッドの両方が含まれていることに注意してください。最初のメソッドを呼び出して Iterator をフィルター処理し、2 番目のメソッドを呼び出して Iterable をフィルター処理します。

于 2010-08-12T02:09:32.620 に答える
0

PeopleSoftBalance は RowModel を拡張しますか?

于 2010-08-11T02:25:18.740 に答える