如何在Java 8中完成
if (var1 != null && var2!=null) {
callMethod(var1,var2);
}
我在想这样的事情,但是有两个变量,
Optional.ofNullable(var1).ifPresent(var1 -> callMethod(var1));
怎么办?
答案 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个参数的论点没有意义,而且性能更差。
保持代码可读,而不看中。矮就是好,矮甚至更好。