Inspectopedia Help

'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