Подтвердить что ты не робот

Нечеткое уведомление об осмотре "NullableProblems" в IntelliJ

Почему я получаю предупреждение от инспекции "NullableProblems" в IntelliJ по этому поводу:

public class Test implements Comparable<Test> {
    @Override
    public int compareTo(Test o) {
        return 0;
    }
}

Я использую IntelliJ 14.1.4 и компилирую с Java 1.7

Скриншот:

enter image description here

Добавление @NotNull до того, как аргумент не поможет:

enter image description here

4b9b3361

Ответ 1

От Comparable.compareTo:

@throws NullPointerException if the specified object is null

Итак, IntelliJ знает, что объект не должен быть null и автоматически добавляет аннотацию @NotNull :

IntelliJ IDEA внимательно рассмотрит байт-код SDK и библиотек и автоматически выведет эти аннотации, чтобы впоследствии их можно было использовать для анализа исходного кода, чтобы определить места, где вы упустили нулевое значение.

Ваш метод overriden не включает эту аннотацию, поэтому он переопределяет это поведение, делая параметр nullable - против контракта интерфейса Comparable.

Вы можете решить эту проблему, добавив @NotNull перед параметром.

Вы также можете отключить эту проверку, нажав Alt + Enter, выбрав предупреждение во всплывающем меню и выбрав Disable inspection в подменю.

Ознакомьтесь с веб-справкой и этот поток для получения дополнительной информации о @NotNull/@NonNull аннотации.

Ответ 2

Это может быть глобально настроено в IntelliJ IDEA легко и для меня лично рекомендуется. Если вы хотите, вы можете добавить свои собственные аннотации.
т.е. javax.validation.constraints.NotNull

Путь к настройке:
Settings > Editor > Inspections > @NotNull/@Nullable problems > Configure annotations

Некоторые скриншоты: введите описание изображения здесь введите описание изображения здесь

Ответ 3

Это потому, что вы переопределяете метод, который не имеет аннотации @NotNull.

IntelliJ IDEA предупреждает вас, если у метода переопределения нет аннотации @NotNull.