Java 8:优雅的方式二检查2个(或更多)变量的不为null

时间:2018-06-26 07:08:36

标签: java-8 optional

如何在Java 8中完成

if (var1 != null && var2!=null) {
     callMethod(var1,var2);
}

我在想这样的事情,但是有两个变量,

Optional.ofNullable(var1).ifPresent(var1 -> callMethod(var1));

怎么办?

1 个答案:

答案 0 :(得分:2)

您的示例清晰易读,寻找替代品毫无意义。如前所述,Optional只能包装一个值。

如果要替换多个非null检查,则可以创建一个结构

Stream.of(var1, var2, var3, ...).allMatch(Objects::nonNull)

这可以包装成一个辅助方法:

 boolean nonNull(Object arg){
   return arg!=null;
 }
 boolean nonNull(Object arg1, Object arg2){
   return arg1!=null && arg2 !=null;
 }
 ...
 boolean nonNull(Object... args){
   return Arrays.stream(args).allMatch(Objects::nonNull);
 }

但是对于少于3个参数的论点没有意义,而且性能更差。

  

保持代码可读,而不看中。矮就是好,矮甚至更好。