Android @NonNull和Jetbrains @NonNull有什么区别

mbo*_*nin 3 java android annotations kotlin

这两个注释之间有什么区别?

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

的科特林编译器的IntelliJ要荣誉android.support.annotation.NonNull,并添加断言检查,如果我传递一个空参数对应的Java功能?

org.jetbrains.annotations.NonNull如果我检查了已经为NonNull的变量,Android皮棉是否会兑现并向我显示警告?

我什么时候应该使用另一个?

Sag*_*gar 5

使用org.jetbrains.annotations.NonNullIntelliJ IDEA可以发现违反合同。仅在使用IDE时完成。

鉴于

android.support.annotation.NonNull由Lint等检查工具负责。如果您在不使用Android Studio或其他IDE的情况下运行检查(例如,通过命令行或Jenkins运行),这将非常有用

编辑:

根据Kotlin 强调的文档@user2340612编译器支持它们两者。由于它在编译器级别受支持,因此它也应从命令行运行。

  • 该死的……他们就不能达成一致吗? (2认同)
  • 基于[this](https://kotlinlang.org/docs/reference/java-interop.html#nullability-annotations),Kotlin编译器同时支持这两种方法,因此在所有情况下都值得使用“ android风格” (2认同)
  • 更确切地说,这是编译器处理可空/不可空注释的部分:https://github.com/JetBrains/kotlin/blob/master/core/descriptors.jvm/src/org/jetbrains/kotlin /load/java/JvmAnnotationNames.kt (2认同)
  • @mbonnin 对于 Kotlin,是的。对于 Java ,没有。 (2认同)