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

Java 如果可选。isPresent()则使用可选值作为方法参数,java,java-8,optional,Java,Java 8,Optional,我有一个包含两个optional的对象,其中optional不为null,我希望将其值作为参数传递给接受多个参数的方法 目前,我有一段代码如下所示: if (dealerRequest.getIsApproved().isPresent()) { repository.updateDealerPartnerFinanceIsApproved(dealerRequest.getDealerId(), dealerRequest.getIsApproved()

我有一个包含两个optional的对象,其中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()作为存储库中方法的可选参数,但是我不知道如何传递(如果可以的话)第二个参数?有更简洁的方法吗?

您不能使用,因为
map
要求您返回一个
可选的
。您可以这样使用(“if”而不是“is”):


您也可以使用
ifPresent()


与第二个选项相对应。

您似乎没有实际使用
ifPresent
。另外,指向您的可运行示例的链接指向该服务的主页。我很尴尬。谢谢。所以如果你的选项没有价值,你就不在你的存储库上执行任何东西?这是正确的吗?或者,如果可选项为空,是否使用默认值更新回购协议?正确,如果可选项没有值,则不调用关联的存储库更新。
dealerRequest.getIsApproved().ifPresent(
    retrn -> repository.updateDealerPartnerFinanceIsApproved(foo.getDealerId(), retrn)
);
//(foo = dealerRequest. it overflowed otherwise)
dealerRequest.getIsApproved().ifPresent(
  approved -> repository.updateDealerPartnerFinanceIsApproved(dealerRequest.getDealerId(), approved));