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()
,因为我收到编译错误。
答案 0 :(得分: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());
}
}
}
答案 1 :(得分:0)
你需要这样做
while(it.hasNext()){
Object obj = it.next() ;
if( obj instanceof Muz ) {
Muz muz = (Muz) obj ;
muz.fiyat();
}
}
答案 2 :(得分:0)
您的CodeCompletion未显示,因为.next()
会返回object
而非IMeyveler
。您将需要进行强制转换或以不同方式进行迭代。
System.out.println(((IMeyveler)it.next()).fiyat());
答案 3 :(得分: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());
}
}
}
}