@Nullable注释用法

2022-08-31 04:38:02

我在java中看到一些方法声明为:

void foo(@Nullable Object obj)
{ ... }

这里是什么意思?这是否意味着输入可能是 ?@Nullablenull

如果没有注释,输入仍然可以为空,所以我想这不仅仅是它吗?


答案 1

它清楚地表明该方法接受 null 值,并且如果重写该方法,则还应接受 null 值。

它还可以作为代码分析器(如FindBugs)的提示。例如,如果这样的方法在没有先检查 null 的情况下取消引用其参数,则 FindBugs 将发出警告。


答案 2

此批注通常用于消除 。 表示此参数可能是 。这种行为的一个很好的例子可以在Google Guice中找到。在这个轻量级的依赖注入框架中,你可以说这个依赖关系可能是 。如果你试图在没有注释的情况下通过,框架将拒绝完成它的工作。NullPointerExceptions@Nullablenullnullnull

更重要的是,可以与注释一起使用。在这里,您可以找到有关如何正确使用它们的一些提示。IntelliJ 中的代码检查检查注释并帮助调试代码。@Nullable@NotNull


推荐