好的,所以我在 java 中有一个奇怪的问题,我很确定这对大多数语言来说都很常见,但这是我第一次遇到这样的事情。假设您有两种方法。
private boolean foo(int param){ /*some arbitrary stuff*/ }
private boolean bar(int param){ /*some arbitrary stuff*/ }
这些方法中的每一个都需要参数,并且基于它们返回的参数的内容true
或false
基于是否发生了某些事情。现在我要让他们工作。
if(foo(21) || bar(321)){
//do some other stuff
}
这里的想法是运行foo()
,bar()
如果其中任何一个返回true
,则执行其他操作。
它看起来很好,它编译了,但是当我运行代码时,事情很时髦。几乎就像每次返回bar()
时都没有运行一样。所以意识到我重写了我的代码的逻辑可能性。foo()
true
boolean a = foo(21);
boolean b = bar(321);
if(a || b){
//do some other stuff
}
这解决了我的问题。我的问题是有谁知道为什么会发生这种情况,或者是否有其他做法可以确保在需要时评估整个条件?