I can understand the below:
user
.filter(u -> "Sam".equals(u.getName()))
.ifPresent(this::doSomethingWithUser);
if user.getName is equal to "Sam" then pass user to local method doSomethingWithUser().
However, what if I simply wanted to call a local method, without passing user but keeping the check that user.getName is equal to "Sam"?
Does this use case make using Optional redundant?
Just ignore the mandatory function parameter. This means you cannot use shorthand :: syntax and goes like this:
user
.filter(u -> "Sam".equals(u.getName()))
.ifPresent(u -> doSomethingWithoutUser());
You can just check for the presence of the Optional for such case:
if(user.filter(u -> "Sam".equals(u.getName()).isPresent()) {
// call your method without user
}
来源:https://stackoverflow.com/questions/58729976/calling-method-after-optional-filter-without-passing-in-object