这两个注释有什么区别?
org.jetbrains.annotations.NonNull
android.support.annotation.NonNull
kotlin 编译器 IntelliJ 是否会尊重
android.support.annotation.NonNull
并添加断言以检查我是否将空参数传递给相应的 java 函数?Android lint 是否会尊重
org.jetbrains.annotations.NonNull
并在我检查一个已经是 NonNull 的变量时向我显示警告?我什么时候应该使用一个?
最佳答案
使用 org.jetbrains.annotations.NonNull
IntelliJ IDEA 发现契约(Contract)被违反。仅当您使用 IDE 时才完成。
而 android.support.annotation.NonNull
由 Lint 等检查工具处理。如果您在不使用 Android Studio 或其他 IDE 的情况下运行检查(例如,通过命令行或通过 Jenkins 运行),这将非常有用
编辑:
基于 @user2340612
突出显示的 documentation,Kotlin 编译器同时支持它们。由于它在编译器级别支持,它也应该从命令行工作。