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의 새로운 기능