报告实现 java.lang.Comparable 但不重写 equals() 的类。

如果未重写 equals()equals() 实现与 compareTo() 实现将不一致。 如果将这样的类的对象添加到 java.util.SortedSet 等集合,该集合将违反根据 equals() 定义的 java.util.Set 的约定。

示例:


  class Length implements Comparable<Length> {
    private int cm = 0;

    @Override
    public int compareTo(@NotNull Length o) {
      if (cm == o.cm) return 0;
      return cm < o.cm ? -1 : 1;
    }
  }

在应用快速修复后:


  class Length implements Comparable<Length> {
    private int cm = 0;

    @Override
    public int compareTo(@NotNull Length o) {
      if (cm == o.cm) return 0;
      return cm < o.cm ? -1 : 1;
    }

    @Override
    public boolean equals(Object o) {
      return o instanceof Length && compareTo((Length) o) == 0;
    }
  }