Suspicious usage of compare method
Reports comparisons of the result of Comparator.compare()
or Comparable.compareTo()
calls with non-zero constants. By contract, these methods can return any integer (not just -1, 0 or 1), so comparing against particular numbers is bad practice. Some widely used comparison methods (e.g. String.compareTo()
) actually return values outside the [-1..1] range, and such a comparison may cause incorrect program behavior.
Example:
void validate(String s1, String s2) {
// Comparing to 1 is incorrect
if (s1.compareTo(s2) == 1) {
throw new IllegalArgumentException("Incorrect order");
}
}
After the quick-fix is applied:
void validate(String s1, String s2) {
if (s1.compareTo(s2) > 0) {
throw new IllegalArgumentException("Incorrect order");
}
}
New in 2017.2
Inspection Details | |
---|---|
Available in: | IntelliJ IDEA 2023.3, Qodana for JVM 2023.3 |
Plugin: | Java, 233.SNAPSHOT |
Last modified: 13 July 2023