java.lang.Comparator を実装しているものの、java.io.Serializable を実装していないクラスを報告します。

非 Serializable なコンパレーターが java.util.TreeMapjava.util.TreeSet などの順序指定されたコレクションを作成するために使用されている場合は、コレクションも非 Serializable になります。 これにより、予期しない診断が困難なバグが発生する可能性があります。

java.lang.Comparator のサブクラスはステートレスであることが多いため、Serializable を指定するだけでこのような問題を回避できます。

例:


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