Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top

Вебинар: Инструменты для разработчиков игр и не только - 26.02

>
>
>
V6133. Dereferencing the parameter...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V6133. Dereferencing the parameter without a null check. Passing the 'null' value to the 'equals' method should not cause 'NullPointerException'.

18 Фев 2026

Анализатор обнаружил, что в переопределённом методе equals отсутствует проверка аргумента на null, что нарушает стандартный контракт.

Рассмотрим пример:

@Override
public boolean equals(Object object) {
  if (this == object) {
    return true;
  }

  if (getClass() != object.getClass()) {
    return false;
  }

  Foo another = (Foo) object;
  return type.equals(another.type) &&
         name.equals(another.name);
}

В методе equals реализована проверка на совпадение классов и сравнение полей. Однако разработчик не учёл вариант, что в качестве аргумента может поступить нулевая ссылка. Это приведёт к выбросу исключения NullPointerException в момент вызова getClass.

Согласно документации переопределение метода Object.equals должно возвращать false при передаче нулевой ссылки, а не генерировать исключение. Это особенно важно в случае, если класс используется в коллекциях.

Исправленный вариант:

@Override
public boolean equals(Object object) {
  if (this == object) {
    return true;
  }

  if (object == null || getClass() != object.getClass()) {
    return false;
  }

  Foo another = (Foo) object;
  return type.equals(another.type) &&
         name.equals(another.name);
}