Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V6054. Classes should not be...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V6054. Classes should not be compared by their name.

25 Июл 2018

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

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

Пример:

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

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

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

либо:

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

или же:

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

Данная диагностика классифицируется как:

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V6054.