Я запускаю SonarQube, чтобы проверить мой код, и обнаружил случай, в котором я не понимаю сообщенную ошибку.
Мой код:
private static final int BASE_ID = 100_000_000;
private boolean isValidId(Id id) {
return id.asInteger().isPresent() && id.asInteger().get() >= BASE_ID;
}
Метод asInteger
возвращает Optional<Integer>
Ошибка, которую я получаю от sonarqube:
Call "Optional#isPresent()" before accessing the value.
в обратной строке.
Я понимаю, что код в порядке, так как вторая часть if
не будет выполнена, если первая ложна. Я знаю, что это можно решить с помощью .filter(..).isPresent()
, но мне больше нравится этот способ.
Есть идеи, почему это случилось?