В чем разница между этими двумя аннотациями?
org.jetbrains.annotations.NonNullandroid.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. Означает ли это, что утверждения не будут добавлены, если я скомпилирую из командной строки?




Использование org.jetbrains.annotations.NonNull IntelliJ IDEA обнаруживает нарушение контракта. Сделано, только если вы используете IDE.
Тогда как
О android.support.annotation.NonNull позаботятся такие инструменты проверки, как Lint. Это полезно, если вы запускаете проверку без использования Android Studio или другой IDE (например, запускаете через командную строку или через Jenkins).
Редактировать:
На основе документация, выделенного @user2340612, компилятор Kotlin поддерживает их оба. Поскольку он поддерживается на уровне компилятора, он также должен работать из командной строки.
Блин ... А разве они не могли договориться об одном и том же?
Компилятор Kotlin, основанный на это, поддерживает оба варианта, поэтому, вероятно, стоит использовать «вкус Android» во всех случаях.
Чтобы быть более точным, это часть компилятора, имеющая дело с аннотациями, допускающими / не допускающими значения NULL: github.com/JetBrains/kotlin/blob/master/core/descriptors.jvm /…
Это круто ! Это также означает, что док немного вводит в заблуждение, когда заявляет, что the *IDE* adds assertions to all methods and parameters annotated with the @NotNull annotation. На самом деле это компилятор, верно?
@mbonnin Для Котлина, да. Для Java нет.