Java 代码块中的冗余if

Java 代码块中的冗余if,java,debugging,if-statement,Java,Debugging,If Statement,我对输入json和schema进行了以下检查。我使用intelliJ,它的静态代码分析是说条件shcema!=null始终为真 现在,如果我不在第一个if条件下检查两个对象,我可能会错过一个不提供任何内容的用例。这就是为什么我在first if and note exception中使用return 这里我遗漏了什么您的第一个if语句检查json和schema是否都为null,然后在第二个if语句中检查其中一个是否为null,对吗 那么第二个if可以简化为: if (json == null |

我对输入
json
schema
进行了以下检查。我使用intelliJ,它的静态代码分析是说条件
shcema!=null
始终为真

现在,如果我不在第一个
if
条件下检查两个对象,我可能会错过一个不提供任何内容的用例。这就是为什么我在first if and note exception中使用
return


这里我遗漏了什么

您的第一个if语句检查
json
schema
是否都为null,然后在第二个if语句中检查其中一个是否为null,对吗

那么第二个if可以简化为:

if (json == null || schema == null){
为什么??因为在这一点上,如果我们知道
json
为null,那么
schema
就不能为null(否则它会返回)。类似地,如果我们知道
schema
为null,那么
json
就不能为null(出于同样的原因)

顺便说一下,如果要检查两个布尔值是否“不同”,请使用异或运算符
^

if (json == null ^ schema == null) {

那么错误或问题是什么呢?您能提供更多详细信息吗?谢谢您给操作员的提示。关于if条件。问题是,如果两者都为null,则函数将正常退出。如果其中一个为
null
,则为
异常。if的简化版本如何同时满足being
null
issue?@EmAe如果两者都为null,函数将返回!你的第一个if语句检查了这一点,对吗?如果第一个If语句为true,那么第二个If语句甚至不会运行!可以因此,您要说的是,我将保留第一个if语句(检查两个null),然后我可以使用
^
运算符简化第二个if,或者可能只检查其中一个对象(如您在回答中所述)。对吗?是的,没错。这就是IntelliJ IDEA的建议。您可以按alt+enter键查看这些警告的快速修复@埃梅
if (json == null ^ schema == null) {