0

「Catalog」は、「Item」オブジェクトのコレクションを格納するクラスです。この目的でリストコレクションを使用することを選択しました。したがって、次のようになります。

public class Catalog {
     List<Item> itemList;

メインクラスは、Catalogオブジェクトをコレクション自体のように扱うforループを使用してItem要素にアクセスできる必要があります。「catalog:」という名前のCatalogオブジェクトを想定します。

for (Item items : catalog) {
     //various operations involving item
}

問題:互換性のないタイプのエラーが発生します。

found: java.lang.Object
requird: Item

私のCatalogクラスはIterableを実装し、リストのイテレーターを返すメソッドiterator()を持っています。

public Iterator iterator() {
    Iterator itr = itemList.iterator();
    return itr;
}   

だから私は何が間違っているのですか?

4

7 に答える 7

3

Catalogを実装する必要がIterable<Item>あり、そのiterator()メソッドは を返す必要がありますIterator<Item>

于 2011-06-16T21:19:59.567 に答える
3
public class Catalog implements Iterable<Item>{
public Iterator<Item> iterator(){
  return itemList.iterator();
}
于 2011-06-16T21:20:34.077 に答える
0

Iterable<Item>だけでなく、実装していることを確認してくださいIterable

于 2011-06-16T21:20:02.480 に答える
0

実装する必要がありますIterable<Item>

于 2011-06-16T21:20:06.583 に答える
0

イテレータの型パラメータを指定する必要があります

public Iterator<Item> iterator() {
    Iterator<Item> itr = itemList.iterator();
    return itr;
}   

そしていつCatalag implements Iterableそれを確認してimplements Iterable<Item>ください。

于 2011-06-16T21:20:25.313 に答える
0

以下を実装する必要があります。

 Iterable<Item>

(パラメータに注意してください)

于 2011-06-16T21:21:39.560 に答える
0

次のようなものを試してください:

for(Item item : catalog.itemList) {
    item.getProperty();
    // ... and so on.
}

あなたのCatalogクラスは反復可能ではありませんが、それは itemList リストです。

于 2011-06-16T21:23:54.203 に答える