The analyzer has detected a potential error that has to do with calling a comparison function on objects of incompatible types. This warning is triggered by such functions as equals, assertEquals, assertArrayEquals, etc.
The following examples demonstrate incorrect use of comparison functions:
Example 1:
String param1 = ...;
Integer param2 = ...;
...
if (param1.equals(param2))
{...}
Example 2:
List<String> list = Arrays.asList("1", "2", "3");
Set<String> set = new HashSet<>(list);
if (list.equals(set))
{...}
In both examples, objects of incompatible types are compared. The comparison will always evaluate to 'false' as the implementations of 'equals' check if the type of the specified object corresponds to that of the current object.
String:
public boolean equals(Object anObject)
{
...
if (anObject instanceof String)
{
...
}
return false;
}
List:
public boolean equals(Object o)
{
...
if (!(o instanceof List))
return false;
...
}
If you get a V6058 warning on your code, you are very likely to have a mistake in it and you should compare some other objects.
Example 1:
...
String param1 = ...;
String param3 = ...;
...
if (param1.equals(param3))
{...}
Example 2:
...
List<String> list = Arrays.asList("1", "2", "3");
List<String> list2 = ...;
...
if (list.equals(list2))
{...}
This diagnostic rule is classified as:
You can look at examples of errors detected by the V6058 diagnostic. |
Was this page helpful?
Your message has been sent. We will email you at
If you do not see the email in your inbox, please check if it is filtered to one of the following folders: