Java 8 的 Optional.ifPresent 和 if-not-Present 的功能风格?
2022-08-31 04:56:05
在Java 8中,我想对一个对象做一些事情,如果它存在,我想做另一件事,如果它不存在。Optional
if (opt.isPresent()) {
System.out.println("found");
} else {
System.out.println("Not found");
}
不过,这不是一种“功能性风格”。
Optional
有一个方法,但我无法链接一个方法。ifPresent()
orElse()
因此,我不能写:
opt.ifPresent( x -> System.out.println("found " + x))
.orElse( System.out.println("NOT FOUND"));
在回复@assylias,我认为不适用于以下情况:Optional.map()
opt.map( o -> {
System.out.println("while opt is present...");
o.setProperty(xxx);
dao.update(o);
return null;
}).orElseGet( () -> {
System.out.println("create new obj");
dao.save(new obj);
return null;
});
在这种情况下,当 存在时,我更新其属性并保存到数据库中。当它不可用时,我创建一个新的并保存到数据库。opt
obj
请注意,在两个 lambda 中,我必须返回 。null
但是,当存在时,将执行两个 lambda。 将更新,并且新对象将保存到数据库 。这是因为在第一个 lambda 中。并将继续执行。opt
obj
return null
orElseGet()