javax.annotation : @Nullable vs @CheckForNull

标签 java annotations static-analysis findbugs

两者有什么区别?两者似乎都意味着该值可能为空,应进行相应处理,即检查是否为空。

更新: 上面的两个注释是 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/

相关文章:

java - 在 Akka Scheduler 中的特定日期安排作业

在子类中使用 "super"并在父类(super class)中使用 "this"的 Java 运行时方法选择

annotations - Kotlin可重复的@annotations在jdk-8上不起作用

java - 是否可以看到 Jackson Annotations 创建的 JSON?

clang-tidy:分析有多个错误的文件

java - JPA OneToMany 在插入另一行时删除第一行(在多方)

java - 将现有项目的构建路径添加到新项目

android - Unresolved reference : Parcelize after adding necessary tools in gradle and updating to kotlin latest version

c++ - 由于 LARGEADDRESSAWARE 检测指针算术

macros - LINT 从评估中排除宏