@Nullable注释用法
我看到java中的一些方法声明为:
void foo(@Nullable Object obj)
{ ... }
@Nullable
的含义是@Nullable
? 这是否意味着输入可能为null
? 没有注释,输入仍然可以为空,所以我猜这不仅仅是它?
谢谢
它明确表示该方法接受空值,并且如果重写该方法,则还应该接受空值。
它也可以作为FindBugs之类的代码分析器的提示。 例如,如果这种方法首先不检查空值而解引用其参数,则FindBugs将发出警告。
此注释通常用于消除NullPointerExceptions
。 @Nullable
经常说这个参数可能为null
。 Google Guice中可以找到这种行为的一个很好的例子。 在这个轻量级的依赖注入框架中,你告诉这个依赖关系可能为null
。 如果你试图传递null
而没有注释,那么框架会拒绝执行它的工作。
还有更多@Nullable
可能与@NotNull
注释一起使用。 在这里你可以找到一些如何正确使用它们的技巧。 IntelliJ中的代码检查会检查注释并帮助调试代码。
不同的工具可能会以不同的方式解释@Nullable
的含义。 例如,Checker Framework和FindBugs处理@Nullable
不同。