大家好,欢迎来到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");
}
你也可以通过交换.orelse
到orElseThrow(() -> new exception (" don ' send a null"))
的位置来抛出一些异常。
如果你不想使用不会添加任何功能的@Nullable,为什么不直接将参数命名为mayB。所以你的想法是很清楚的。
文章翻译自Stack Overflow:https://stackoverflow.com/questions/14076296/nullable-annotation-usage
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11100.html