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

前端之家收集整理的这篇文章主要介绍了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的这个功能的状态.

猜你在找的Java相关文章