在Java8中,我想对一个可选的对象(如果它存在)做一些事情,如果它不存在,我想做另一件事情
if(opt.isPresent()){
System.out.println(“找到”);
}否则{
System.out.println(“未找到”);
}
不过,这不是一种“功能性风格”
Optional有一个ifPresent()方法,但我无法链接orElse()方法
因此,我不能写:
opt.ifPresent(x->;System.out.println(“found”+x))
.orElse(System.out.println(“未找到”);
作为对@assylias的回复,我认为Optional.map()不适用于以下情况:
opt.map(o->{
System.out.println(“opt存在时…”);
o、 setProperty(xxx);
更新(o);
返回null;
}).orElseGet(()->{
System.out.println(“创建新对象”);
dao.save(新obj);
返回null;
});
在这种情况下,当出现opt时,我更新其属性并保存到数据库中。当它不可用时,我创建一个新的obj,并保存到数据库中
注意,在两个lambda中,我必须返回null
但是当存在opt时,两个lambda都将被执行obj将被更新,新对象将保存到数据库中。这是因为在第一个lambda中返回null。而orElseGet()将继续执行
如果您使用的是Java 9+,则可以使用ifpresentorese()方法:
opt.ifpresentorese(
值->;系统输出打印项次(";找到:";+value),
()->;系统输出打印项次(";未找到";)
);