Java 8 Java8:检查两个或多个变量不为null的优雅方法
如何在Java8中实现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
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
语句相比,它没有多大用处。我也在想这个。