微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 使用NullPointerException来测试null是不好的风格吗?

我有一些代码沿着以下模式:
return a().b().c().d().e();

现在由于这些方法中的每一个都可以返回null,所以通常会测试一下:

if( (a()!=null) && (a().b() != null) && ....) {
   return a().b().c().d().e();
} else  {
  return null;
}

(并且可能使用一些局部变量来避免重复调用)

我很想做:

try {
   return a().b().c().d().e();
} catch (NullPointerException e) {
   return null;
}

这被认为是坏的风格吗?效率低下?还是挺好的

解决方法

不要这样做与基本空值检查相比,投掷和捕获异常相当昂贵.

您可能还有兴趣知道,为未来版本的Java提出了这种语法,这将使此更简单.它会这样的:

a()?.b()?.c()?.d()

“?”操作将是“.”的可选版本.操作符.如果LHS为空,那么它将返回null,而不是尝试评估RHS.正是你正在寻找,但我恐怕没有为Java 7削减.不知道Java 8的这个功能的状态.

原文地址:https://www.jb51.cc/java/122358.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐