V6054. Classes should not be compared by their name.


Анализатор обнаружил ситуацию, когда сравнение классов осуществляется по имени. Такое сравнение является некорректным, т.к. согласно спецификации JVM классы имеют уникальное имя только внутри пакета.

Помимо логических ошибок, такой код может в некоторых случаях привести к различным уязвимостям, поскольку не известно, какое поведение у непроверенного класса.

Пример:

if (obj.getClass().getSimpleName().equals("Plane"))
{
  ....
}

Такой код следует переписать следующим образом:

if(obj.getClass().equals(ArrayList.class))
{
  ....
}

либо:

if (obj instanceof Plane)
{
  ....
}

или же:

if (obj.getClass().isAssignableFrom(Plane.class))
{
  ....
}

Найденные ошибки

Проверено проектов
363
Собрано ошибок
13 495

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;