Comparators should be “Serializable“ (squid:S2063)

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) {...}
}
 


版权声明:本文为loophome原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。