@Nullable 注解的用法「终于解决」

@Nullable 注解的用法「终于解决」问题:@Nullable注解的用法我看到java中的一些方法声明为:voidfoo(@NullableObjectobj){…}在这里@Nullable是什么意思?这是不是意味着输入可以为空?没有这个注解,输入仍然可以是null,所以我猜这不是它的用法?回答一它清楚地说明了这个方法接受空值,而且如果你重写该方法,你也应该接受空值。它也可以作为像FindBugs这样的代码分析器的提示。例如,如果这样一个方法不首先检查空值就间接引用它的参数,FindBugs就会发出警告。回答二这

大家好,欢迎来到IT知识分享网。

问题:@Nullable 注解的用法

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

void foo(@Nullable Object obj)

{ 
   }

IT知识分享网

在这里@Nullable是什么意思?这是不是意味着输入可以为空?

没有这个注解,输入仍然可以是null,所以我猜这不是它的用法?

回答一

它清楚地说明了这个方法接受空值,而且如果你重写该方法,你也应该接受空值。

它也可以作为像FindBugs这样的代码分析器的提示。例如,如果这样一个方法不首先检查空值就间接引用它的参数,FindBugs就会发出警告。

回答二

这个注解通常用于消除空指针异常。@Nullable表明该参数可能为null。一个很好使用例子就是谷歌Guice。在这个轻量级依赖注入框架中,你可以说明这个依赖项可能是空的。如果你试图在没有注解的情况下传递空值,这个框架就不会执行它的工作。

更重要的是@Nullable可以与@NotNull注解一起使用。在这里你可以找到一些正确使用它们的提示。IntelliJ中的代码检查也可以检查注解并且帮助调试代码。

回答三

当然,这里肯定有不同的想法,我的想法是,我不能强制“永远不要传递空值”,因为我在处理不可控制的第三方的东西,例如API调用的东西,数据库的记录,之前程序员的东西等。所以我偏执地抗拒这种方法。因为你使用的是Java8或更高版本,有一种比if代码块更简洁的方法。

IT知识分享网public String foo(@Nullable String mayBeNothing) {
   return Optional.ofNullable(mayBeNothing).orElse("Really Nothing");
}

你也可以通过交换.orelseorElseThrow(() -> new exception (" don ' send a null"))的位置来抛出一些异常。

如果你不想使用不会添加任何功能的@Nullable,为什么不直接将参数命名为mayB。所以你的想法是很清楚的。

文章翻译自Stack Overflow:https://stackoverflow.com/questions/14076296/nullable-annotation-usage

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11100.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信