在 Optional.filter() 之后调用方法而不传入对象
Calling method after Optional.filter() without passing in object
我能理解以下内容:
user
.filter(u -> "Sam".equals(u.getName()))
.ifPresent(this::doSomethingWithUser);
如果 user.getName
等于 "Sam"
则将 user
传递给本地方法 doSomethingWithUser()
.
但是,如果我只是想调用一个本地方法,而不传递 user
但保持检查 user.getName
等于 "Sam"
怎么办?
这个用例是否使使用 Optional
变得多余?
对于这种情况,您可以只检查 Optional
是否存在:
if(user.filter(u -> "Sam".equals(u.getName()).isPresent()) {
// call your method without user
}
忽略强制函数参数即可。这意味着您不能使用 shorthand ::
语法并且像这样:
user
.filter(u -> "Sam".equals(u.getName()))
.ifPresent(u -> doSomethingWithoutUser());
我能理解以下内容:
user
.filter(u -> "Sam".equals(u.getName()))
.ifPresent(this::doSomethingWithUser);
如果 user.getName
等于 "Sam"
则将 user
传递给本地方法 doSomethingWithUser()
.
但是,如果我只是想调用一个本地方法,而不传递 user
但保持检查 user.getName
等于 "Sam"
怎么办?
这个用例是否使使用 Optional
变得多余?
对于这种情况,您可以只检查 Optional
是否存在:
if(user.filter(u -> "Sam".equals(u.getName()).isPresent()) {
// call your method without user
}
忽略强制函数参数即可。这意味着您不能使用 shorthand ::
语法并且像这样:
user
.filter(u -> "Sam".equals(u.getName()))
.ifPresent(u -> doSomethingWithoutUser());