use*_*893 329 java annotations
我在java中看到一些方法声明为:
void foo(@Nullable Object obj)
{ ... }
Run Code Online (Sandbox Code Playgroud)
这是什么意思@Nullable
?这是否意味着输入可能是null
?没有注释,输入仍然可以为空,所以我猜这不仅仅是它吗?
谢谢
Ada*_*der 81
这个注释通常用于消除NullPointerExceptions
.@Nullable
经常说这个参数可能是null
.可以在Google Guice中找到此类行为的良好示例.在这个轻量级依赖注入框架中,您可以告诉这种依赖关系null
.如果你试图传递null
而没有注释,框架将拒绝做它的工作.
更多@Nullable
可能与@NotNull
注释一起使用.在这里,您可以找到一些如何正确使用它们的提示.IntelliJ中的代码检查检查注释并帮助调试代码.
诚然,肯定有不同的想法,在我的世界里,我不能强制执行“永远不要传递 null”,因为我正在与无法控制的第三方打交道,例如 API 调用者、数据库记录、前程序员等......所以我在方法上是偏执和防御的。由于您使用的是 Java8 或更高版本,因此有比if
块更干净的方法。
public String foo(@Nullable String mayBeNothing) {
return Optional.ofNullable(mayBeNothing).orElse("Really Nothing");
}
Run Code Online (Sandbox Code Playgroud)
.orElse
您还可以通过交换到
来抛出一些异常orElseThrow(() -> new Exception("Dont' send a null"))
。
如果您不想使用@Nullable,它不会在功能上添加任何内容,为什么不直接用 来命名参数,mayBe...
以便您的意图很明确。
归档时间: |
|
查看次数: |
201368 次 |
最近记录: |