我试图了解Java 8中API 的ifPresent()
方法Optional
。
我有简单的逻辑:
Optional<User> user=...
user.ifPresent(doSomethingWithUser(user.get()));
但这会导致编译错误:
ifPresent(java.util.functionError:(186, 74) java: 'void' type not allowed here)
我当然可以做这样的事情:
if(user.isPresent())
{
doSomethingWithUser(user.get());
}
但是,这就像是一张混乱的null
支票。
如果我将代码更改为此:
user.ifPresent(new Consumer<User>() {
@Override public void accept(User user) {
doSomethingWithUser(user.get());
}
});
代码变得越来越脏,这让我想到了回到旧null
支票。
有任何想法吗?