报告实现 java.lang.Comparator 但不实现 java.io.Serializable 的类。

如果使用不可序列化的比较器来构建 java.util.TreeMapjava.util.TreeSet 之类的有序集合,那么该集合也不可序列化。 这可能会导致意外且难以诊断的错误。

由于 java.lang.Comparator 的子类通常无状态,因此只需将它们标记为可序列化,即可轻松避免此类问题。

示例:


  class Foo implements Comparator { // 警告
      @Override
      public int compare(Object o1, Object o2) {
          /* ... */
      }
  }

在应用快速修复后:


  class Foo implements Comparator, Serializable { // 此处无警告
      @Override
      public int compare(Object o1, Object o2) {
          /* ... */
      }
  }