Сонар 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