Inspectopedia Help

Collection declared by class, not interface

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

Inspection options

Option

Type

Default

Ignore local variables

Checkbox

false

Ignore 'private' fields and methods

Checkbox

false

Inspection Details

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3

Plugin:

Java, 233.SNAPSHOT

Last modified: 13 July 2023