我正在尝试学习 Java 8 特性Optional,但我对 Optional.orElse
的工作原理感到困惑。这是我的尝试:
public class OptionalsExample {
public static void main(String[] args) {
Name userName = new Name();
userName.setName("John Doe");
Optional<Name> optionalName = Optional.ofNullable(userName);
optionalName.ifPresent(
(Name value) -> {
Optional<String> optionalNameString = Optional.ofNullable(value.getName());
optionalNameString.ifPresent(name -> System.err.println("Name is: " + optionalNameString.get()));
}
);
}
private static void printError() {
System.err.println("No Name present");
}
}
我的担忧是如果设置了名称,一切都能很好地工作,但是当没有设置名称时,我想执行或者。当我评论时,我想做些什么。
userName.setName("John Doe");
比如打印No Name Found
我该怎么做呢?
TIA
optionalNameString.ifPresent(name -> …)
时,实际的String
已经在name
参数中提供,因此在 lambda 表达式中调用optionalNameString
上的get()
是没有意义的。同样,在此处调用orElse
也没有任何意义,因为当Optional
为空时,lambda 表达式不会被执行。 - Holger