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

时间:2017-04-20 14:29:17

标签: java java-8 optional

我有一个包含几个选项的对象,其中可选项不为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 个答案:

答案 0 :(得分:7)

您也可以使用ifPresent()

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

并相应地为第二个可选项。

答案 1 :(得分:2)

您无法使用map,因为map希望您返回Optional。您可以使用ifPresent("我 f "不是"我 s "),如下所示:

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

Runnable example