Comparator.compare
或 Comparable.compareTo
的结果与特定的非零常量进行比较的情况。
根据约定,这些方法可以返回任何正数(不仅仅是 1)或任何负数(不仅仅是 -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 的新功能