-1
package example;

import java.util.ArrayList;
import java.util.Iterator;

public class anaBolum {
    public static void main(String[] args) {
        ArrayList<IMeyveler> list = new ArrayList<>();
        list.add(new Muz());
        list.add(new Elma());

        Iterator it = list.iterator();
        while(it.hasNext()){
            it.next().fiyat() //compile error
        }
    }
}

私はlist.iterator()リスト要素にアクセスするために使用されました。fiyat()しかし、コンパイルエラーが発生するため、イテレータでこのメソッドにアクセスできません。

4

4 に答える 4

0

コンパイル時エラーが発生していると思います。その場合、イテレータ宣言を次のように変更する必要がありますIterator<IMeyveler> it = list.iterator();

そうでなければ、イテレータはそれによって処理されるオブジェクトのタイプを知りません。

public class anaBolum {
    public static void main(String[] args) {
        IMeyveler muz = new Muz();
        muz.fiyat();// Work

        ArrayList<IMeyveler> list = new ArrayList<>();
        list.add(new Muz());
        list.add(new Elma());

        Iterator<IMeyveler> it = list.iterator();
        while(it.hasNext()){
            System.out.println(it.next().fiyat());
        }
    }
}
于 2012-12-30T13:32:05.043 に答える
0

あなたはこのようにする必要があります

    while(it.hasNext()){
        Object obj = it.next() ;
        if( obj instanceof Muz ) {
          Muz muz = (Muz) obj ;
          muz.fiyat();
        }
    } 
于 2012-12-30T13:32:17.063 に答える
0

.next()を返し、ではないため、CodeCompletionは表示されませobjectIMeyveler。キャストするか、別の方法で反復する必要があります。

    System.out.println(((IMeyveler)it.next()).fiyat());
于 2012-12-30T13:32:39.290 に答える
0

これを試してください:

package javaaa;

import java.util.ArrayList;
import java.util.Iterator;

public class anaBolum {
    public static void main(String[] args) {
        IMeyveler muz = new Muz();
        muz.fiyat();// Work

        ArrayList<IMeyveler> list = new ArrayList<>();
        list.add(new Muz());
        list.add(new Elma());

        for(IMeyveler fruit : list)
        {
            if(fruit instanceof Muz)
            {
                System.out.println(fruit.fiyat());
            }
        }  
    }
}
于 2012-12-30T14:02:43.890 に答える