Что означает `@Nullable @org.jetbrains.аннотации.Данные об обнуляемых намерениях » нужны и необходимы ли они?

#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 поможет вам понять разницу. (это только для котлина)

Также есть два типа :

1.- Jetbrains Annotations

2.- Android Annotations

Но это связано с тем, что, если вы используете jetbrains, он предупредит вас на интеллектуальных IDE, например, если вы запустите код lint через терминал, он вас не предупредит, а Android-он предупредит вас, даже если вы запустите его на конвейерах, lint и т. Д.

Так что, возможно, лучше использовать androidx.annotation.Nullable вместо этого, что более точно.

Комментарии:

1. я на самом деле спрашиваю, почему есть два nullable, я в основном знаю, что он делает сам по себе, но не понимаю, почему они решили, что по умолчанию разумно добавить два из них (один из аннотаций androidx и один из аннотаций jetbrains)

2. Отредактировал мой ответ @JustAnEuropean

3. ну, единственная другая информация, которую я считаю важной, — это то, распознаются ли аннотации androidx на том же уровне, что и аннотации jetbrains, но быстрая проверка показывает, что это так. Ваш ответ был довольно проблематичным для меня, чтобы понять, но я думаю, что он содержит эту информацию, так что хорошо.