Сонар NullPointerException неправильно обнаружен после проверки isInstance

Я очень часто использую чек getClass().isInstance() при переопределении метода equals класса Java, как в следующем примере:

1 - public boolean equals(Object obj){
2 -    if(getClass().isInstance(obj)){
3 -         MyClass cls= (MyClass) obj;
4 -         return obj.getId().equals(this.id);
5 -    }
6 -    return false;
7 - }

Передавая этот код в SonarQube (версия 6.7.2), я получаю следующее сообщение об ошибке в строке кода 4:

"NullPointerException" может быть брошено; "obj" здесь можно обнулять.

Но согласно Javadoc метода isInstance() это не так:

Метод возвращает значение true, если указанный аргумент Object не равен NULL и может быть приведен к ссылочному типу, представленному этим объектом Class, без вызова ClassCastException. В противном случае возвращается false.

Таким образом, объект в строке 4 не может быть нулевым. Поэтому мой вопрос: почему Сонар обнаруживает это как ошибку? Если это не ошибка, как я думаю, есть способ сказать Сонару игнорировать подобные ситуации.

Заранее спасибо.

Fabio

0 ответов

Другие вопросы по тегам