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

V6066. Passing objects of incompatible types to the method of collection.

14 Дек 2018

Анализатор обнаружил потенциальную ошибку, связанную с вызовом метода коллекции, в который передали объект, тип которого не совпадает с типом коллекции. Анализатор выдает предупреждения на такие функции как remove, contains, removeAll, containsAll, retainAll и т.д.

Давайте рассмотрим пример с ошибочным использованием метода 'remove':

List<String> list = ...;
Integer index = ...;
...
list.remove(index);

Здесь хотели удалить объект из списка по индексу, но не учли, что индекс не примитивный целый тип, а объект типа 'Integer'. Будет использоваться перегруженный метод 'remove', который ожидает на вход объект, а не 'int'. Объекты 'Integer' и 'String' несовместимы, и поэтому использование метода будет ошибочным.

Если нет возможности изменить тип переменной "index", то можно исправить код следующим образом:

List<String> list = ...;
Integer index = ...;
...
list.remove(index.intValue());

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

  • CERT-EXP04-J

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