我们正在使用构建器模式为服务创建一些输入,它看起来像这样(简化):
final SomeInput input = SomeInput.builder()
.withSomeId(....)
.withSomeState(....)
...
.build();
我们想在 SomeInput 中设置一些属性,但前提是它存在。所以在创建对象之后,我会做这样的事情:
Optional<String> secondaryId = infoProvider.getSecondaryId();
if (secondaryId.isPresent()) {
input.setSecondaryId(secondaryId.get());
}
我在想:
a) 有没有更好/更清洁的方法来做到这一点? b) 如果我确实需要这样做,我可以避免使用“if”语句并使用 Optional 的某些功能吗?
(注意:我无法更改构建器本身,我也无法确定 secondaryId 是一个字符串,但我们从 infoProvider 中检索到的内容是可选的)
最佳答案
更简洁的方法是使用 ifPresent
secondaryId.ifPresent(input::setSecondaryId);
但这几乎是满足这些要求的最佳选择。
关于java - 使用具有可选值的构建器模式的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46896248/