迭代器是不是内置函数,为什么我必须导入它?
// inside my class
public void playRound() {
Iterator<Player> itr = players.iterator();
while(itr.hasNext()){
Player player =itr.next();
player.play(par);
}
// Supply this code!
}
它说:异常在线程“主要” java.lang.Error的:未解决的问题,编译: 迭代器不能被解析为一个类型迭代器是不是内置函数,为什么我必须导入它?
是不是迭代器内置的功能?
我不得不进口:
import java.util.Iterator;
如果我想解决这个问题,有没有办法来避免进口迭代器。 为什么我不能简单地导入迭代器,尽管它会为我节省很多时间,是因为对于我的项目,我不允许导入除之外的其他任何东西import java.util.ArrayList;
此外,我使用eclipse写我的代码。
总之 - 没有。 Iterator
没有什么“神奇的”。这是从java.util
包中的类,如果你想使用它,你要么导入或引用它的全名:
java.util.Iterator<Player> itr = players.iterator();
但我想这也是你的要求禁止。相反,你可以只使用一个加强for
循环:
for (Player player : players) {
player.play(par);
}
编辑:
作为@yshavit在评论中指出,由于players
是List
,不是任何旧Iterable
,你可以直接通过访问元素他们的指数,这意味着你还可以使用一个“老土” for
循环:
for (int i = 0; i < players.size(); ++i) {
players.get(i).play(par);
}
或者迭代遍历索引的非增强型'for'。根据问题给出的内容,很难知道老师想要哪一个。 – yshavit
它建在Java的主库中。不是java本身。
在Java中,每个类都必须导入或引用才能使用。它是否内置或无关紧要。
的选项有:
- 不要使用迭代器。使用arraylist代替它。
// inside my class public void playRound() { ArrayList<Player> itr = new ArrayList<Player>(); while(itr.listIterator().hasNext()){ Player player =itr.listIterator().next(); player.play(par); } // Supply this code! }
- 你的另一种选择是引用它,而不是直接导入的。
// inside my class public void playRound() { java.util.Iterator<Player> itr = layers.iterator();; while(itr.hasNext()){ Player player =itr.next(); player.play(par); } // Supply this code! }
我建议第一个选项,因为第二个可能仍然被认为是进口。
你的解决方案很有意义。不过,我对你的意思有些困惑,它是在Java的主库中构建的。不是java本身。'? – Maggie
Java是一种语言。不包括任何课程。它仅包含基元类型。 – BernardoGO
您不必在'java.lang'中显式导入类。你可以使用'String','StringBuilder','Exception'等,而不需要'import'语句。 – ajb
相反迭代器使用的:
// inside my class
public void playRound() {
for (Player player : players) {
player.play(par);
}
// Supply this code!
}
这是一样的事情,只是没有迭代器。
java.util.Iterator
内置于JDK(从版本1.2),但你需要明确地导入,原因是只有java.lang
包中的类被默认导入的,而不是其他的包,即,因为Iterator
类是java.util
包你需要明确import
它。
'Iterator'是一个类。您需要直接或间接导入您使用的每个类 – TheLostMind
*我不允许导入除import java.util.ArrayList之外的任何其他类; * - 那么也许不要使用Iterator? – Li357
你可以说java.util.Iterator但我想这不是练习的目标。它看起来像老师或提供片段的人忘记了导入它,似乎不是你必须提供的代码的一部分。 –
maraca