如何使用Optional替代null判断实现myClass到myClass2的字段赋值?
实现代码
你可以直接用Optional.ofNullable结合ifPresent实现完全等价于原有逻辑的写法,代码如下:
Optional.ofNullable(myClass) .ifPresent(existMyClass -> { myClass2.setId(existMyClass.getId()); myClass2.setName(existMyClass.getName()); myClass2.setPosition(existMyClass.getPosition()); });
逻辑说明
- 上述代码和你原有的if判空逻辑完全一致:只有当myClass不为null时,才会执行大括号内的字段赋值操作
- 如果你使用的是Java 9+,还可以配合
ifPresentOrElse扩展为空时的分支逻辑,不需要额外写if-else判断 - 如果需要进一步对myClass的单个字段做非空校验,也可以在lambda内部继续使用Optional嵌套处理,和原有写法的扩展性一致
小提示:如果只是简单的非空执行单逻辑,原生if判空的可读性也不差,Optional更适合需要链式处理非空逻辑、避免多层嵌套判空的场景。
内容的提问来源于stack exchange,提问作者user13034249
相关产品推荐
相关产品推荐

