gpt4 book ai didi

java - 检查逻辑析取中的所有条件

转载 作者:行者123 更新时间:2023-11-29 05:43:44 25 4
gpt4 key购买 nike

我在这行代码中找到了问题。忽略这段代码没有意义的事实:

if (object != null || object.someMethod()) object.doSomething();

首先我在想,如果对象为空,这段代码将抛出 NullPointerException。但是,这是一个逻辑析取,如果其中一个条件为真,则整个条件为真。所以编译器不会检查第二个条件,也不会抛出 NullPointerException

这个 Java 标准行为或实现是特定的吗?如果第二种情况为真,则此代码不安全。

最佳答案

当 object 不为 null 时,会发生短路求值,并且永远不会调用 object.someMethod()

当 object 为 null 时,此表达式应在计算 object.someMethod() 时抛出 NullPointerException。

这不是一个特别有用的条件。考虑是否是 && 而不是 ||。

关于java - 检查逻辑析取中的所有条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16565744/

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