Анализатор обнаружил потенциальную ошибку, связанную с вызовом функции сравнения для несовместимых по типу объектов. Анализатор выдает предупреждения на некорректное использование таких функций как equals, assertEquals, assertArrayEquals и т.д.
Разберем ошибочные случаи сравнения:
Пример 1:
String param1 = ...; Integer param2 = ...; ... if (param1.equals(param2)) {...}
Пример 2:
List<String> list = Arrays.asList("1", "2", "3"); Set<String> set = new HashSet<>(list); if (list.equals(set)) {...}
В обоих примерах сравниваются объекты с несовместимыми типами. Результат их сравнения всегда будет false, так как в реализациях 'equals' есть проверка на соответствие пришедшего объекта с текущим.
Для String:
public boolean equals(Object anObject) { ... if (anObject instanceof String) { ... } return false; }
Для List:
public boolean equals(Object o) { ... if (!(o instanceof List)) return false; ... }
Если V6058 в вашем коде, то скорее всего это ошибка, и сравнивать надо другие объекты.
Пример 1:
... String param1 = ...; String param3 = ...; ... if (param1.equals(param3)) {...}
Пример 2:
... List<String> list = Arrays.asList("1", "2", "3"); List<String> list2 = ...; ... if (list.equals(list2)) {...}
Данная диагностика классифицируется как:
Взгляните на примеры ошибок, обнаруженных с помощью диагностики V6058. |