java sonarQube空检查

rbpvctlc  于 4个月前  发布在  Java
关注(0)|答案(1)|浏览(58)

我有一个类似于

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。有人能帮助我解决这个问题吗?

fv2wmkja

fv2wmkja1#

首先,您提供的Java代码无效,因为您忽略了参数类型。
什么时候可以抛出NullPointerException?每次你试图解引用一个指向null的变量时。
由于existingValues的可空性,NPE不能被抛出,因为前面的空检查会处理它。
但是updatedValues.conFactorupdatedValues.url,特别是existingValue.url上的相等检查可能会抛出NPE。
不要只是添加上面的那些引用,考虑一下在使用Design-by-contract创建对象时是否可以在对象上强制非空性。

相关问题