Сонар дает NullPointerException не правильно - PullRequest
0 голосов
/ 02 июля 2018

У меня есть код 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 ... sonar показывает, что obj может быть нулевым, но я уже проверил нулевое значение.

Есть ли способ избавиться от этой проблемы?

1 Ответ

0 голосов
/ 02 июля 2018

Вы можете использовать явный нулевой тест.

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

Само правило не распознает использование Objects.isNull как пустую проверку. Objects.isNull (Object obj) возвращает результат выражения null == obj, поэтому его можно безопасно заменить.

Однако вы можете связаться с SonarSource и предложить изменить правило.

...