使用带有可选值的构建器模式的更好方法?

Cus*_*Bun 5 java optional java-8

我们使用构建器模式为服务创建一些输入,它看起来像这样(简化):

final SomeInput input = SomeInput.builder()
    .withSomeId(....) 
    .withSomeState(....)
    ...
    .build();
Run Code Online (Sandbox Code Playgroud)

我们想在SomeInput中设置一些属性,但仅限于它存在.所以在创建对象后,我做了这样的事情:

Optional<String> secondaryId = infoProvider.getSecondaryId();
if (secondaryId.isPresent()) {
   input.setSecondaryId(secondaryId.get());
}
Run Code Online (Sandbox Code Playgroud)

我在想:

a)有更好/更清洁的方法吗?b)如果我确实需要这样做,我可以避免使用"if"语句并使用Optional的某些功能吗?

(注意:我无法更改构建器本身,我不能认为secondaryId是String,但我们从infoProvider检索的是可选的)

Kay*_*man 8

使用会更清洁一点 ifPresent

secondaryId.ifPresent(input::setSecondaryId);
Run Code Online (Sandbox Code Playgroud)

但这几乎是你能满足这些要求的最佳方法.