在Optional.filter()之后调用方法,而不传入对象

我可以理解以下内容:

user
  .filter(u -> "Sam".equals(u.getName()))
  .ifPresent(this::doSomethingWithUser);

如果user.getName等于"Sam",则将user传递给本地方法doSomethingWithUser()

但是,如果我只是想调用一个本地方法而不传递user但又要检查user.getName等于"Sam"怎么办?

此用例是否使使用Optional多余?

missel 回答:在Optional.filter()之后调用方法,而不传入对象

只需忽略强制功能参数。这意味着您不能使用速记::语法,并且会像这样:

user
  .filter(u -> "Sam".equals(u.getName()))
  .ifPresent(u -> doSomethingWithoutUser());
,

在这种情况下,您只需检查Optional是否存在:

if(user.filter(u -> "Sam".equals(u.getName()).isPresent()) {
    // call your method without user
}
本文链接:https://www.f2er.com/3152312.html

大家都在问