如果在代码块

时间:2018-01-22 16:54:12

标签: java debugging if-statement

我对输入jsonschema进行了以下检查。我使用intelliJ,它的静态代码分析是说条件shcema != null总是正确的

if (json == null && schema == null){
    return;
}

if ((json == null && schema != null) || (json != null && schema == null)){
    throw new InvalidRequestException("error message");
} else try {
    JsonSchema jsonSchema = JsonSchemaFactory.byDefault().getJsonSchema(schema);
    ProcessingReport processingReport = jsonSchema.validate(json);
    ...
} catch ( ... ) { ... }

现在,如果我没有放入我检查两个对象的第一个if条件,我可能会错过一个可以不提供任何内容的用例。这就是为什么我首先使用return,而不是例外。

我在这里缺少什么

1 个答案:

答案 0 :(得分:1)

你的第一个if语句检查jsonschema是否都为空,然后在第二个if语句中检查其中一个是否为空,对吧?

那么第二个如果可以简化为:

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

为什么呢?因为此时,如果我们知道json为空,那么schema不能为空(否则它将返回)。同样,如果我们知道schema为空,那么json不能为空(出于同样的原因)。

顺便说一句,如果你想检查两个布尔值是否“不同”,请使用XOR运算符^

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