В чем разница между Android @NonNull и Jetbrains @NonNull

В чем разница между этими двумя аннотациями?

  • org.jetbrains.annotations.NonNull
  • android.support.annotation.NonNull

Собирается ли компилятор котлина IntelliJ соблюдать android.support.annotation.NonNull и добавлять утверждения, чтобы проверить, передаю ли я нулевой параметр соответствующей java-функции?

Собирается ли Android lint соблюдать org.jetbrains.annotations.NonNull и показывать мне предупреждение, если я проверю переменную, которая уже является NonNull?

Когда я должен использовать одно вместо другого?

От jetbrains.com/help/idea/nullable-and-notnull-annotations.htm‌ l: the IDE adds assertions to all methods and parameters annotated with the @NotNull annotation. Означает ли это, что утверждения не будут добавлены, если я скомпилирую из командной строки?

mbonnin 23.05.2018 12:22
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
2
2 189
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Использование org.jetbrains.annotations.NonNull IntelliJ IDEA обнаруживает нарушение контракта. Сделано, только если вы используете IDE.

Тогда как

О android.support.annotation.NonNull позаботятся такие инструменты проверки, как Lint. Это полезно, если вы запускаете проверку без использования Android Studio или другой IDE (например, запускаете через командную строку или через Jenkins).

Редактировать:

На основе документация, выделенного @user2340612, компилятор Kotlin поддерживает их оба. Поскольку он поддерживается на уровне компилятора, он также должен работать из командной строки.

Блин ... А разве они не могли договориться об одном и том же?

mbonnin 23.05.2018 12:23

Компилятор Kotlin, основанный на это, поддерживает оба варианта, поэтому, вероятно, стоит использовать «вкус Android» во всех случаях.

user2340612 23.05.2018 12:28

Чтобы быть более точным, это часть компилятора, имеющая дело с аннотациями, допускающими / не допускающими значения NULL: github.com/JetBrains/kotlin/blob/master/core/descriptors.jvm‌ /…

user2340612 23.05.2018 12:33

Это круто ! Это также означает, что док немного вводит в заблуждение, когда заявляет, что the *IDE* adds assertions to all methods and parameters annotated with the @NotNull annotation. На самом деле это компилятор, верно?

mbonnin 23.05.2018 12:36

@mbonnin Для Котлина, да. Для Java нет.

Sagar 23.05.2018 12:42

Другие вопросы по теме