问题
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?
回答1:
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());
回答2:
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