Reports on declarations of 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).