java sonarQube空检查

rbpvctlc  于 2024-01-05  发布在  Java
关注(0)|答案(1)|浏览(317)

我有一个类似于

  1. boolean shouldPublish(existingValues, updatedValues){
  2. if(existingValues==null)
  3. return false;
  4. // compare values
  5. if(!(Double.compare(existingValues.conFactor,updatedValues.conFactor) !=0) || !(existingValue.url.equals(updatedValues.url))){
  6. return true;
  7. }
  8. }

字符串
SonarQube给了我一个错误,说在Double.compare语句中的现有值可能会引发NullpointerException。有人能帮助我解决这个问题吗?

fv2wmkja

fv2wmkja1#

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

相关问题