Collection
variables made by using the collection class as the 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) is 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
).