我对输入json
和schema
进行了以下检查。我使用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
,而不是例外。
我在这里缺少什么
答案 0 :(得分:1)
你的第一个if语句检查json
和schema
是否都为空,然后在第二个if语句中检查其中一个是否为空,对吧?
那么第二个如果可以简化为:
if (json == null || schema == null){
为什么呢?因为此时,如果我们知道json
为空,那么schema
不能为空(否则它将返回)。同样,如果我们知道schema
为空,那么json
不能为空(出于同样的原因)。
顺便说一句,如果你想检查两个布尔值是否“不同”,请使用XOR运算符^
:
if (json == null ^ schema == null) {