Java 8 Java8:检查两个或多个变量不为null的优雅方法

Java 8 Java8:检查两个或多个变量不为null的优雅方法,java-8,optional,Java 8,Optional,如何在Java8中实现 if (var1 != null && var2!=null) { callMethod(var1,var2); } 我是这样想的,但有两个变量: Optional.ofNullable(var1).ifPresent(var1 -> callMethod(var1)); 你的例子清晰易读,没有必要寻找替代方案。正如您所提到的,Optional只能包装一个值 如果要替换多个非空检查,可以创建一个结构 Stream.of(var1, va

如何在Java8中实现

if (var1 != null && var2!=null) {
     callMethod(var1,var2);
}
我是这样想的,但有两个变量:

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

你的例子清晰易读,没有必要寻找替代方案。正如您所提到的,Optional只能包装一个值

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

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个参数,这没有意义,而且性能更差

保持代码可读性,而不是花哨。短的好,短的更好


if(Stream.of(var1,var2,…).noneMatch(Objects::isNull)){…}
您可以使用专门的少量参数版本重载该方法,例如
boolean nonNull(Object arg1,Object arg2){return arg1!=null&&arg2!=null;}
,但是,与使用站点上的一个简单的
if
语句相比,它没有多大用处。我也在想这个。