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