Collection
variables made by using the collection class as a type,
rather than an appropriate interface. The warning is not issued if weakening the variable type
will cause a compilation error.
Example:
// Warning: concrete collection class ArrayList used.
int getTotalLength(ArrayList<String> list) {
return list.stream().mapToInt(String::length).sum();
}
// No warning, as trimToSize() method is not
// available in the List interface
void addData(ArrayList<String> data) {
data.add("Hello");
data.add("World");
data.trimToSize();
}
A quick-fix is suggested to use the appropriate collection interface (e.g. Collection
, Set
, or List
).