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