Netbeans给出了The conditional statement is redundant
警告:
return (this.getId(person) == null) ? false : true;
如果我遵守这一点,那就改为:
return (this.getId(person) != null);
这两个是否相等?第二个如何有条件?
答案 0 :(得分:5)
是的,它们在概念上都是相同的。
第二个不是有条件的。它的表达式解析为boolean
,所以只需要你可以得到那个表达式。
为什么在第一种情况下它是多余的,就像写
一样 if(true){
return true;
}else{
return false;
}
看看你的状况
this.getId(person) != null;
您的this.getId(person)
可能是null
,也可能不是。这样表达式解析为true
或false
。而已。对 ?所以你的IDE告诉你使用那个表达式结果。
答案 1 :(得分:3)
表达式this.getId(person) == null
会返回true
或false
。再次添加三元运算符是多余的。
答案 2 :(得分:3)
您可以将第一个表单解包为以下内容:
boolean cnd = (this.getId(person) == null);
if (cnd)
return true;
else
return false;
这清楚地表明,切换布尔值只是为了返回相同的布尔值是多余的。
第二个语句不是有条件的,但它提供了相同的结果,跳数更少。
答案 3 :(得分:0)
您将返回一个布尔值和
return (this.getId(person) != null);
是一个布尔条件语句,将计算为true或false。这就是编译器告诉您条件语句冗余的原因。它仍然会以另一种方式编译,但它的打字更多,而且不是那么干净。