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