gpt4 book ai didi

java - 为什么这个 if 语句不会短路?

转载 作者:行者123 更新时间:2023-11-30 11:28:59 29 4
gpt4 key购买 nike

我目前正在修复其他人的 Java 代码中的错误,但我无法解释该错误。有问题的代码是以下 if 语句:

if (locked && DEBUG_ENABLED
&& owner != null
&& (owner.equals(playerName) || subowner.equals(playerName))
&& handleCommand(playerName, message)) {
....
} else {
....
}

其中 DEBUG_ENABLED 被初始化为 private static boolean DEBUG_ENABLED = false;handleCommand 函数如下:

public boolean handleCommand(String name, String msg) {
if(msg.equals("Command1")) {
....
} else if(msg.equals("Command2")) {
....
} ....
} else { // No matching command
return false;
}
return true;
}

令我疑惑的是,即使DEBUG_ENABLED设置为false,代码仍然会调用并执行handleCommand函数。我一直认为这不应该由于短路而发生。if 语句本身仍然被评估为 false,因为只有第一个片段中 else block 内的代码被执行。

那么,这个 if 语句为什么会这样呢?是短路失败,还是我理解错了原理,还是这部分代码有什么完全不同的地方? (除了缺少对 subowner 的 null 检查,也就是说,这是在这部分之外完成的。)

最佳答案

不可能&&运算符短路失败。也许您使用的是 & ?如果不是,则意味着您做出了一些错误的假设,即上一个条件之前的条件是错误的。

关于java - 为什么这个 if 语句不会短路?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18677512/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com