if 检查中的方法调用是否已“测试”然后“恢复”?

2023-12-19

我突然忘记了 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(使用前将#替换为@)

if 检查中的方法调用是否已“测试”然后“恢复”? 的相关文章

随机推荐