什么是最好的 'NonNull'注释?
意义上的"最佳"
以下是世界目前的样子 - 任何进一步的见解都值得赞赏:
javax.validation.constraints.NotNull(Docs)
+ javax包因此看起来是未来的
- JEE的一部分不是 JSE.在JSE中需要导入额外的库.
- 静态分析工具不支持(仅限运行时验证)
(docs)edu.umd.cs.findbugs.annotations.NonNull
- 外部库而不是javax包
- 不推荐使用,因为findbugs版本3.X
+用于静态分析(由findbugs和Sonar提供)
(docs)javax.annotation.Nonnull
+用于静态分析(在findbugs中)
- JSR-305处于休眠/死亡/未知状态,如fb邮件列表所示.提交人Bill Pugh,即使直接被问到,多年来也没有对该州进行评论......
(文档,有趣的演示文稿)org.eclipse.jdt.annotation_2.0.0
+用于静态分析(虽然在eclipse中不在findbugs中)
- eclipse专有(没有尝试独立使用它们)
(docs)org.jetbrains.annotations.NotNull
+用于静态分析(虽然不是在findbugs
中的IntelliJ )- IntelliJ专有(但也可以公开作为jar)
lombok.NonNull(docs)
+用于控制代码生成
- 专有注释
android.support.annotation.NonNull(docs)
+ android …
在Java中,我有以下方法:
public Optional<Foo> getFoo() {
// always return some non-null value
}
Run Code Online (Sandbox Code Playgroud)
在Kotlin代码中,此方法的返回类型为Optional<Foo!>!。通过使用@Nonnull注释,我可以将其缩减为Optional<Foo!>(即,仅Foo不再对类型进行空检查)。
有没有办法注释使Kotlin编译器对返回值正确进行null检查的方法?