首页 文章

如果optional.isPresent()则使用可选值作为方法参数

提问于
浏览
2

我有一个包含几个选项的对象,其中可选项不为null,我想将其值作为参数传递给需要多个参数的方法 .

目前我有一个代码块,如下所示:

if (dealerRequest.getIsApproved().isPresent()) {                
    repository.updateDealerPartnerFinanceIsApproved(dealerRequest.getDealerId(), dealerRequest.getIsApproved().get());
}
if (dealerRequest.getIsOptedIn().isPresent()) {                
    repository.updateDealerPartnerFinanceOptedIn(dealerRequest.getDealerId(), dealerRequest.getIsOptedIn().get());
}

我知道检查值是存在的,然后稍后获取它比以前的空检查更有用;但是我不知道在这种情况下如何使用它们呢?

理想情况下,我将.map()作为我的存储库上的方法的可选项,但后来我不知道如何传递(如果可以的话)第二个参数?这样做有更简洁的方法吗?

2 回答

  • 2

    你也可以使用 ifPresent()

    dealerRequest.getIsApproved().ifPresent(
      approved -> repository.updateDealerPartnerFinanceIsApproved(dealerRequest.getDealerId(), approved));
    

    并相应地用于第二个可选项 .

  • 7

    您不能使用map因为 map 希望您返回 Optional . 您可以像这样使用ifPresent(“i f " not " i s ”):

    dealerRequest.getIsApproved().ifPresent(
        retrn -> repository.updateDealerPartnerFinanceIsApproved(foo.getDealerId(), retrn)
    );
    //(foo = dealerRequest. it overflowed otherwise)
    

    Runnable example

相关问题