我突然忘记了如果检查有效的话方法是如何在内部调用的。
例子:
if (list.next() instanceof AClass) {
AClass thing = list.next();
}
在这个例子中,如果 next()
迭代到列表中的下一个对象,返回的两个项是 list.next()
同一个物体?
通常,if检查中的方法调用是“测试”的,然后“还原”的,所以主体中的方法调用与if检查中的方法调用相同吗?
我突然忘记了如果检查有效的话方法是如何在内部调用的。
例子:
if (list.next() instanceof AClass) {
AClass thing = list.next();
}
在这个例子中,如果 next()
迭代到列表中的下一个对象,返回的两个项是 list.next()
同一个物体?
通常,if检查中的方法调用是“测试”的,然后“还原”的,所以主体中的方法调用与if检查中的方法调用相同吗?
2条答案
按热度按时间ahy6op9u1#
答案取决于该计划的实施
next()
方法。例如,如果list
是一个Iterator
然后每次呼叫next()
推进迭代器,这样代码中的两个调用将给出不同的结果(假设它们不引发异常)。如果list
是一个Scanner
. 每次呼叫next()
会产生不同的输出。另一方面,如果
next()
方法只返回list
示例,并且不更改其状态,对它的多个调用将提供相同的输出。通常称为
next()
更改调用它们的对象的状态,但这只是一种编码约定。ttygqcqt2#
如果
list
是一个Iterator
,您可能需要:为了打电话
.next()
就一次。两个后续调用将返回两个对象,因为内部位置在每个对象上向前移动一步.next()
调用。没有任何类型的“逆转”发生。