Линт сонара: результаты compareTo не должны проверяться на конкретные значения

Я сравниваю два значения и получаю выброс линта сонара "Only the sign of the result should be examined" this issue.

Код:

if (recBalanceAmt.compareTo(recRolloverEligibility) == 1) {
     recExpAmt = recBalanceAmt.subtract(recRolloverEligibility);
}

Как решить эту проблему?


person Shiladittya Chakraborty    schedule 20.05.2016    source источник


Ответы (1)


Сонар предлагает сравнить результат compareTo с 0, а не если он возвращает напрямую 1, -1.

if (recBalanceAmt.compareTo(recRolloverEligibility) > 0) {

Вы можете найти причину этого предложения в compareTo () Javadoc

Возвращает: отрицательное целое число, ноль или положительное целое число, поскольку этот объект меньше, равен или больше указанного объекта.

person guido    schedule 20.05.2016
comment
Почему? сравнивать с 1 не ОК? или есть какие-то проблемы со сравнением с 1? - person Shiladittya Chakraborty; 20.05.2016
comment
по контракту метод compareTo может возвращать любое положительное значение, не обязательно 1, поэтому, если метод возвращает 2, а вы сравниваете результат с 1, ваше условие не будет выполнено. - person benzonico; 20.05.2016