java-8 - Java 8:检查两个或多个变量不为空的优雅方法
问题描述
如何在 Java 8 中完成?
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 个参数,这没有意义,而且性能更差。
保持代码可读,而不是花哨。短是好的,短的更好。
推荐阅读
- python - 如果进程结束或死亡,如何自动重新操作python脚本文件?
- django - 如何将 django 模型与基于函数的视图相结合
- ffmpeg - FFMPEG 忽略设置用户代理或其他标头的尝试
- r - 有没有办法在 R 中使用 dplyr 根据另一个列的值创建一个新列?
- android - Android 错误:特定代码块中的“不是语句”
- react-admin - 我可以更改每条路线的 react-admin 布局吗?
- fortran - 赋值后的实际值与实际表达式不同
- angular - 从 OL OSM 中的图层源获取中心点
- python - C++ 和 Boost.Python - 如何向 python 公开变量并在循环中更新它?
- python - 如何让 conda 知道我的包的数据和配置文件在哪里