A non-serializable Comparator
can prevent an otherwise-Serializable
ordered collection from being serializable. Since the
overhead to make a Comparator
serializable is usually low, doing so can be considered good defensive programming.
Noncompliant code example
public class FruitComparator implements Comparator<Fruit> { // Noncompliant
int compare(Fruit f1, Fruit f2) {...}
boolean equals(Object obj) {...}
}
Compliant solution
public class FruitComparator implements Comparator<Fruit>, Serializable {
private static final long serialVersionUID = 1;
int compare(Fruit f1, Fruit f2) {...}
boolean equals(Object obj) {...}
}