【问题标题】:Is there a Java annotation for noting that a List may contain nulls?是否有 Java 注释指出 List 可能包含空值?
【发布时间】:2017-11-03 19:57:15
【问题描述】:

是否有类似 @ContainsNulls 注释的东西指出 List 中可能存在空值?

【问题讨论】:

    标签: java annotations


    【解决方案1】:

    要指定列表可能包含空元素,请使用 Java 的类型注释功能声明列表元素类型。例如:

    List<@Nullable String> mylist;

    存在许多用于检查 nullsess 的工具,每个工具都定义了自己的 @Nullable 注释。许多工具可以读取和解释其他工具的注释。

    大多数工具将@NonNull 设为默认注释,因此如果您只写List<String>,该工具会将其解释为List<@NonNull String>。这种选择减少了代码中的混乱。

    可以在Checker Framework manual 中找到不同工具及其注释的列表。

    其中一些工具是错误检测器,可以发现一些空指针异常,而另一些工具则是可以保证您的代码没有空指针异常的验证工具。适合您的工具取决于您的情况;这是两种工具中的a comparison

    【讨论】:

    • 啊,不知道您可以将注释放在泛型本身中!谢谢!
    • 这似乎不起作用,至少在 Intellij/Java 8 上不起作用。也许在泛型中注释类型是后来出现的?
    【解决方案2】:

    会导致编译错误。

    '@Nullable' 不适用于类型使用

    我们不能将@Nullable 注解放在类型定义中。可选类可以在这里提供帮助。

    List<@Nullable String> mylist;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-24
      • 2013-08-21
      • 2019-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      相关资源
      最近更新 更多