网站建站公司官网,大连好的网站建设公司,免费咨询肾病专家,那个做我女朋友的网站问题#xff1a;Nullable 注解的用法
我看到java中的一些方法声明为:
void foo(Nullable Object obj){…}在这里Nullable是什么意思?这是不是意味着输入可以为空?
没有这个注解#xff0c;输入仍然可以是null#xff0c;所以我猜这不是它的用法?
回答一
它清楚地说明…问题Nullable 注解的用法
我看到java中的一些方法声明为:
void foo(Nullable Object obj){…}在这里Nullable是什么意思?这是不是意味着输入可以为空?
没有这个注解输入仍然可以是null所以我猜这不是它的用法?
回答一
它清楚地说明了这个方法接受空值而且如果你重写该方法你也应该接受空值。
它也可以作为像FindBugs这样的代码分析器的提示。例如如果这样一个方法不首先检查空值就间接引用它的参数FindBugs就会发出警告。
回答二
这个注解通常用于消除空指针异常。Nullable表明该参数可能为null。一个很好使用例子就是谷歌Guice。在这个轻量级依赖注入框架中你可以说明这个依赖项可能是空的。如果你试图在没有注解的情况下传递空值这个框架就不会执行它的工作。
更重要的是Nullable可以与NotNull注解一起使用。在这里你可以找到一些正确使用它们的提示。IntelliJ中的代码检查也可以检查注解并且帮助调试代码。
回答三
当然这里肯定有不同的想法我的想法是我不能强制“永远不要传递空值”因为我在处理不可控制的第三方的东西例如API调用的东西数据库的记录之前程序员的东西等。所以我偏执地抗拒这种方法。因为你使用的是Java8或更高版本有一种比if代码块更简洁的方法。
public String foo(Nullable String mayBeNothing) {return Optional.ofNullable(mayBeNothing).orElse(Really Nothing);
}你也可以通过交换.orelse到orElseThrow(() - new exception ( don send a null))的位置来抛出一些异常。
如果你不想使用不会添加任何功能的Nullable为什么不直接将参数命名为mayB。所以你的想法是很清楚的。
文章翻译自Stack Overflowhttps://stackoverflow.com/questions/14076296/nullable-annotation-usage