两者有什么区别?两者似乎都意味着该值可能为空,应进行相应处理,即检查是否为空。
更新: 上面的两个注释是 JSR-305/FindBugs 的一部分: http://findbugs.sourceforge.net/manual/annotations.html
最佳答案
我认为您添加的链接很清楚:如果您使用 @CheckForNull
并且使用该值的代码不检查 null
,FindBugs 将显示这是一个错误。
FindBugs 将忽略 @Nullable
。
In practice this annotation is useful only for overriding an overarching
NonNull
annotation.
在必须始终检查值的情况下使用 @CheckForNull
。使用 @Nullable
其中 null
可能没问题。
编辑:目前看来 @CheckForNull
没有得到很好的支持,所以我建议避免使用它并使用 @NonNull
(另见 Which @NotNull Java annotation should I use? )。
另一个想法是直接与 FindBugs 开发人员联系,并询问他们对文档中的不一致之处的意见。
关于javax.annotation : @Nullable vs @CheckForNull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12301570/