【发布时间】:2014-08-05 08:50:31
【问题描述】:
我正在尝试理解 Java 8 中 Optional API 的 ifPresent() 方法。
我的逻辑很简单:
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检查。
有什么想法吗?
【问题讨论】:
标签: java lambda java-8 optional