Это аннотация, но правильное название NonNull
:
protected void onSaveInstanceState(@NonNull Bundle outState)
(А также)
import android.support.annotation.NonNull;
Цель состоит в том, чтобы позволить компилятору предупреждать, когда определенные предположения нарушаются (например, параметр метода, который всегда должен иметь значение, как в этом конкретном случае, хотя есть и другие). Из документации Support Annotations :
@NonNull
Аннотации можно использовать , чтобы указать , что данный параметр не может быть пустым.
Если известно, что локальная переменная имеет значение NULL (например, из-за того, что какой-то более ранний код проверял, была ли она нулевой), и вы передаете это в качестве параметра методу, где этот параметр помечен как @NonNull, IDE предупредит вас, что у вас потенциальная авария.
Это инструменты статического анализа. Поведение во время выполнения не изменяется.
В этом случае особое предупреждение заключается в том, что исходный метод, который вы переопределяете (в Activity
), имеет @NonNull
аннотацию к outState
параметру, но вы не включили ее в метод переопределения. Простое добавление должно решить проблему, т.е.
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
}
NotNull
/NonNull
. Скорректированный ответ соответственно.В библиотеку поддержки Android недавно был добавлен ряд полезных аннотаций поддержки. Их основная роль - аннотировать свойства различных методов и параметров, чтобы помочь отловить ошибки. Например, если вы передадите
null
значение параметру, отмеченномуNotNull
аннотацией, вы получите предупреждение.Аннотации можно добавить в ваш проект с помощью Gradle, добавив следующую зависимость:
Вы получаете предупреждение, потому что
Bundle
параметр отмечен@NotNull
аннотацией и при переопределении метода аннотация становится скрытой. Правильнее всего будет добавить аннотацию к параметру переопределенного метода.источник
В дополнение к другим ответам аннотация
@NonNull
(и ее противник@Nullable
) аннотирует тип возвращаемого поля, параметра или метода. IntelliJ и, следовательно, Android Studio могут предупредить вас о возможныхNullPointerException
s во время компиляции.Пример лучше всего здесь:
Эти аннотации не изменяют поведение во время выполнения (хотя я экспериментировал с этим), но служат инструментом для предотвращения ошибок.
Обратите внимание, что полученное вами сообщение не было ошибкой, а просто предупреждением, которое можно проигнорировать, если вы захотите. Альтернативой является также аннотирование параметра самостоятельно, как предлагает Android Studio:
источник