报告 Comparator.compare()Comparable.compareTo() 调用结果与非零常量的比较。 根据约定,这些方法可以返回任何整数(不只是 -1、0 或 1),因此与特定数字比较是一种不好的做法。 某些广泛使用的比较方法(例如 String.compareTo())实际上返回 [-1..1] 范围之外的值,此类比较可能会导致不正确的程序行为。

示例:


  void validate(String s1, String s2) {
    // 与 1 比较不正确
    if (s1.compareTo(s2) == 1) {
      throw new IllegalArgumentException("Incorrect order");
    }
  }

在应用快速修复后:


  void validate(String s1, String s2) {
    if (s1.compareTo(s2) > 0) {
      throw new IllegalArgumentException("Incorrect order");
    }
  }

2017.2 最新变化