我的声纳受到了侵犯:
"条件不应无条件地评估为" TRUE"或者到" FALSE""
代码如下。
List<MediaContent> savedList = source.getChildMediaContents();
List<MediaContent> supplierList = target.getChildMediaContents();
// if existing and incoming both empty
if(savedList == null && supplierList == null){
return false;
}
// if one is null and other is not then update is required
if(savedList == null && supplierList != null){
return true;
}
if(savedList != null && supplierList == null){
return true;
}
在两个if块之下,它给出了一个错误
// if one is null and other is not then update is required
if(savedList == null && supplierList != null){
return true;
}
if(savedList != null && supplierList == null){
return true;
}
答案 0 :(得分:4)
if(savedList == null && supplierList == null){ return false; } if(savedList == null && supplierList != null){
条件supplierList != null
在到达时始终为真。
由于Java中&&
运算符的短路行为,
在达到supplierList != null
之前,
savedList == null
必须先成为现实。
但如果savedList == null
为真,
然后我们从先前的条件知道supplierList
不是null
,所以它是一个毫无意义的条件。
另一方面,如果savedList == null
为假,
那么由于短路行为,
<{1}}将不会被评估。
因此,无论supplierList != null
的结果如何,
永远不会评估savedList == null
,
所以你可以简单地删除那个条件。
supplierList != null
下一步:
if (savedList == null) { return true; }
由于之前的简化,现在很明显if(savedList != null && supplierList == null){
不能savedList
。所以我们也可以删除这个条件:
null
简而言之,这相当于您发布的代码:
if (supplierList == null) {
return true;
}
答案 1 :(得分:1)
基于上述情况,你可以避免第二个如果条件并且有一个其他情况
if(savedList == null && supplierList == null){
return false;
} else {
return true; // either savedList or supplierList is not null
}
或者您可以简单地使用return语句删除所有if语句
return (savedList != null || supplierList != null);
答案 2 :(得分:0)
您可以尝试:
if(savedList == null && supplierList == null){
return false;
}
return true;