我正在研究代码,我不明白for循环实际上在做什么。
for (final Move move : this.getPossibleMoves(color)) {
// do something..
}
班级移动:
public class Move {
private final int source;
private final int target;
public Move() {
source = 0;
target = 0;
}
getPossibleMoves方法:
public Move[] getPossibleMoves(final PieceColor color) {
// do something
return simpleMoves.toArray(new Move[0]);
}
答案 0 :(得分:2)
请参阅the official docs on the For-Each Loop了解相关信息。
你可以这样思考:
for (Iterator<Move> itr = this.getPossibleMoves(color).iterator(); itr.hasNext();)
{
final Move mv = itr.next();
...
}
答案 1 :(得分:1)
此 for 语句具有以下形式:
form(Type element: iterable) { ... }
其中element
是数组,列表,集合或Iterable
类型对象中包含的任何对象集合的元素。
在您的情况下getPossibleMoves()
返回Move
类型的对象数组。这是您更清晰的代码,以便您更好地理解它的作用:
Move[] moves = this.getPossibleMoves(color);
for (final Move move : moves) {
// do something....
}
答案 2 :(得分:0)
这是enhanced for loop,在 5.0版中的 Java SE平台中引入,它是一种迭代数组元素的简单方法或者Collection
。当您希望以倒数第一顺序逐步遍历数组的每个元素时,可以使用它们,并且您不需要知道当前元素的索引。
假设this.getPossibleMoves(color)
返回Move[]
数组。此代码:
for (final Move move : this.getPossibleMoves(color)) {
// do something....
}
隐含地等同于:
for (int index=0;index<this.getPossibleMoves(color).length;index++) {
final Move move = this.getPossibleMoves(color)[index];
// do something....
}
建议阅读: