如何简化Java中判断Optional字段存在的条件判断代码?
代码优化方案
原代码可以利用Optional的链式调用特性简化,避免显式的isPresent()和get()调用,同时减少重复代码:
Builder requestBuilder = new Builder(); myPlan.getSomeField() .map(field -> NullableField.ofNullable(field.getId())) .map(Optional::of) .ifPresent(requestBuilder::setSomeFieldId);
优化说明:
- 用
map()替代手动取值转换:先将Optional<SomeField>转换为Optional<NullableField>,再进一步转换为Optional<Optional<NullableField>>(对应原代码中Optional.of(NullableField.ofNullable(...))的结构) - 用
ifPresent()替代显式的if判断:仅当myPlan.getSomeField()存在时,才执行setSomeFieldId操作,完全匹配原逻辑
你之前尝试的orElse不适用是因为它的作用是值不存在时返回默认值,但你的需求是仅在值存在时执行操作,不需要提供默认值,所以ifPresent才是更贴合场景的API。
内容的提问来源于stack exchange,提问作者S.Dan
相关产品推荐
相关产品推荐

