#java #android #android-studio #android-activity
Вопрос:
У меня есть автоматически сгенерированное переопределение, подобное этому:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable @org.jetbrains.annotations.Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
Эта @Nullable @org.jetbrains.annotations.Nullable Intent data
часть выглядит любопытно, и я не уверен, что это необходимо для ее существования. Нужна ли Android Studio @org.jetbrains.annotations.Nullable
для правильной работы?
Комментарии:
1. Я не знаю об Android studio (вот почему я написал это здесь), но обычно в этом нет необходимости. это означает, что это поле может быть пустым, поэтому, если вы напишете
data.something
, редактор покажет предупреждение
Ответ №1:
Нет, в этом методе нет необходимости добавлять @Nullable
аннотации. Это просто для того, чтобы программист знал, что data
это может произойти null
в какой-то момент. Это полезно также для компилятора, если вы добавляете значение @Nullable
и не проверяете, равно ли оно нулю, компилятор может предупредить вас, что вы можете получить NullPointerException
.
Редактировать
Возможно, это Annotating Type Arguments And Type Parameters
поможет вам понять разницу. (это только для котлина)
Также есть два типа :
Но это связано с тем, что, если вы используете jetbrains, он предупредит вас на интеллектуальных IDE, например, если вы запустите код lint через терминал, он вас не предупредит, а Android-он предупредит вас, даже если вы запустите его на конвейерах, lint и т. Д.
Так что, возможно, лучше использовать androidx.annotation.Nullable
вместо этого, что более точно.
Комментарии:
1. я на самом деле спрашиваю, почему есть два nullable, я в основном знаю, что он делает сам по себе, но не понимаю, почему они решили, что по умолчанию разумно добавить два из них (один из аннотаций androidx и один из аннотаций jetbrains)
2. Отредактировал мой ответ @JustAnEuropean
3. ну, единственная другая информация, которую я считаю важной, — это то, распознаются ли аннотации androidx на том же уровне, что и аннотации jetbrains, но быстрая проверка показывает, что это так. Ваш ответ был довольно проблематичным для меня, чтобы понять, но я думаю, что он содержит эту информацию, так что хорошо.