'Comparator' class not declared 'Serializable'
Reports classes that implement java.lang.Comparator
, but do not implement java.io.Serializable
.
If a non-serializable comparator is used to construct an ordered collection such as a java.util.TreeMap
or java.util.TreeSet
, then the collection will also be non-serializable. This can result in unexpected and difficult-to-diagnose bugs.
Since subclasses of java.lang.Comparator
are often stateless, simply marking them serializable is a small cost to avoid such issues.
Example:
class Foo implements Comparator { // warning
@Override
public int compare(Object o1, Object o2) {
/* ... */
}
}
After the quick-fix is applied:
class Foo implements Comparator, Serializable { // no warning here
@Override
public int compare(Object o1, Object o2) {
/* ... */
}
}
Inspection Details | |
---|---|
Available in: | IntelliJ IDEA 2023.3, Qodana for JVM 2023.3 |
Plugin: | Java, 233.SNAPSHOT |
Last modified: 13 July 2023