Inspectopedia Help

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