加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:30:32 所属栏目:Java 来源:网络整理
导读:我有一些代码沿着以下模式: return a().b().c().d().e(); 现在由于这些方法中的每一个都可以返回null,所以通常会测试一下: if( (a()!=null) (a().b() != null) ....) { return a().b().c().d().e();} else { return 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的这个功能的状态.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读