ArrayList ls = new ArrayList();
ls.add(45);
ls.add(30);
ls.add(19);
**Iterator it = ls.iterator();**
当Iterator是一个接口时,我很困惑如何通过ArrayList引用调用iterator()。任何人都能解释一下这背后的逻辑吗?
答案 0 :(得分:2)
ArrayList 类有 iterator()方法。当您通过ArrayList对象调用ArrayList类的 iterator()方法时,迭代器()方法返回Iterator接口的引用 .once你有Iterator接口的引用,然后你可以轻松遍历所有数据。
ArrayList ls = new ArrayList();//here we getting ArrayList object
ls.add(45);
ls.add(30);
ls.add(19);
Iterator it = ls.iterator();//we call ArrayList class method which is iterator() by ls object of ArrayList class.
答案 1 :(得分:1)
当我被介绍时,这最初让我对接口感到困惑。我假设接口无法声明,因为尚未定义方法,这是正确的,因为您不能启动接口,但对象可以是 type 界面,就是您在代码中所说的内容。
为我解决这个问题的一个例子如下:
interface Adult {
public void work();
public void payTaxes();
public void reproduces();
}
interface Child {
public void goToSchool();
public void doHomework();
}
interface Baby {
public void soilDiaper();
public void cry();
}
public class Human implements Adult, Child, Baby {
@Override
public void work() {...}
@Override
public void payTaxes() {...}
@Override
public void reproduces() {...}
@Override
public void goToSchool() {...}
@Override
public void doHomework() {...}
@Override
public void soilDiaper() {...}
@Override
public void cry() {...}
}
Adult dad = new Human();
Adult mom = new Human();
Child jack = new Human();
Baby jill = new Human();
在上面的例子中,我有四个人:爸爸,妈妈,杰克和吉尔。他们都是人类,但我会以不同的方式对待每一个人。妈妈和爸爸将被视为成人,我只能使用Human类中与Adult的界面模式匹配的方法。对于jack,我只能使用子接口方法,而对于jill,只能使用Baby接口方法。
为了将此问题与您的问题联系起来,您正在创建的it对象被赋予一个符合Iterator接口的对象,但是没有给出 接口的对象。它被赋予一个符合到Iterator接口的对象。
答案 2 :(得分:0)
cout << "Enter the account you want to deposit money into " << endl;
cin >> acc;
for (int i = 0; i < n; i++)
ram[acc].deposit();
break;
是iterator
类方法的名称,此方法返回对ArrayList
接口的引用。