Optional
逐层取值
String version = "UNKNOWN";
if(computer != null)
{
Soundcard soundcard = computer.getSoundcard();
if(soundcard != null){
USB usb = soundcard.getUSB();
if(usb != null){
version = usb.getVersion();
}
}
}
改进: flatMap返回Optional对象, map提取属性值
String name = computer.flatMap(Computer::getSoundcard)
.flatMap(Soundcard::getUSB)
.map(USB::getVersion)
.orElse("UNKNOWN");
值处理
Optional<Soundcard> soundcard = ...;
soundcard.ifPresent(System.out::println);
if(soundcard.isPresent()){
System.out.println(soundcard.get());
}
默认值
Soundcard soundcard = maybeSoundcard != null ? maybeSoundcard : new Soundcard("basi