我有一个类似于
boolean shouldPublish(existingValues, updatedValues){
if(existingValues==null)
return false;
// compare values
if(!(Double.compare(existingValues.conFactor,updatedValues.conFactor) !=0) || !(existingValue.url.equals(updatedValues.url))){
return true;
}
}
字符串
SonarQube给了我一个错误,说在Double.compare语句中的现有值可能会引发NullpointerException。有人能帮助我解决这个问题吗?
1条答案
按热度按时间fv2wmkja1#
首先,您提供的Java代码无效,因为您忽略了参数类型。
什么时候可以抛出NullPointerException?每次你试图解引用一个指向null的变量时。
由于
existingValues
的可空性,NPE不能被抛出,因为前面的空检查会处理它。但是
updatedValues.conFactor
,updatedValues.url
,特别是existingValue.url
上的相等检查可能会抛出NPE。不要只是添加上面的那些引用,考虑一下在使用Design-by-contract创建对象时是否可以在对象上强制非空性。