关于java:@Nullable注释用法

@Nullable annotation usage

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

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

这里@Nullable的含义是什么? 这是否意味着输入可能是null

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


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

它还可以作为FindBugs等代码分析器的提示。例如,如果此方法取消引用其参数而不先检查null,则FindBugs将发出警告。


此注释通常用于消除NullPointerExceptions@Nullable通常表示此参数可能null。可以在Google Guice中找到此类行为的良好示例。在这个轻量级依赖注入框架中,您可以告诉该依赖关系可能是null。如果您尝试传递null而没有注释,框架将拒绝执行它的工作。

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


不同的工具可以不同地解释@Nullable的含义。例如,Checker Framework和FindBugs处理@Nullable的方式不同。