V6066. Passing objects of incompatible types to the method of collection.
Анализатор обнаружил потенциальную ошибку, связанную с вызовом метода коллекции, в который передали объект, тип которого не совпадает с типом коллекции. Анализатор выдает предупреждения на такие функции как 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());
Данная диагностика классифицируется как:
|
Взгляните на примеры ошибок, обнаруженных с помощью диагностики V6066. |