声纳给NullPointerException不正确

时间:2018-07-02 11:38:04

标签: sonarqube sonar-runner sonarlint sonarqube5.1

我正在使用Java代码:

public class Test {

  public static void main(String[] args) {
    Student student = new Student(1,"test");
    printId(student);
  }

  private static void printId(Student obj) {
    if(Objects.isNull(obj))
      return;
    System.out.println("Id: " + obj.getId());
  }

}

public class Student {

  private int id;
  private String name;

  public Student(int id, String name) {
    this.id = id;
    this.name = name;
  }

  public int getId(){
    return id;
  }

}

在System.out.println ...行中,声纳表明obj可以为空,但我已经检查了空值。

有什么办法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以使用显式null测试。

if(null==obj) 
return;
......

该规则本身无法将Objects.isNull的使用识别为null检查。 Objects.isNull(Object obj)返回null == obj表达式的结果,因此可以安全地替换它。

不过,您可以联系SonarSource并建议更改规则。