我突然忘记了 if-checks 中的方法调用是如何工作的。
Example:
if (list.next() instanceof AClass) {
AClass thing = list.next();
}
还是在这个例子中,如果next()
迭代到列表中的下一个对象,这两个项目是由list.next()
同一个对象?
一般来说,if-checks 中的方法调用是否经过“测试”然后“恢复”,以便主体中的相同方法调用与 if-check 中的方法调用相同?
答案取决于该计划的实施next()
方法。例如,如果list
is an Iterator
然后每次调用next()
推进迭代器,因此代码中的两个调用将给出不同的结果(假设它们不引发异常)。如果list
is a Scanner
。每次致电next()
会产生不同的输出。
另一方面,如果next()
方法只返回一些属性list
实例并且不改变其状态,对它的多次调用将给出相同的输出。
通常称为的方法next()
更改调用它们的对象的状态,但这只是一种编码约定。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)