私は勉強しようとしていますJava 8の機能オプションです。 Optional.orElseがどのように動作しているのか混乱しています。ここで私が試したものです:オプションの理解。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");
}
}
私の懸念は、名前が設定されている場合、すべてが正常に動作しますが、名前が設定されていないときに私がorElseを実行したいということです。私が見つけたん名前を印刷しないように
userName.setName("John Doe");
コメント際 は、私が何かをしたい
私はそれをどのように行うことができますか?
TIA
'optionalNameString.ifPresent(name - > ...)'と書くと、実際の 'String'はすでに' name'パラメータで提供されているので、 'optionalNameString'で' get() 'を呼び出すのは意味がありません。ラムダ式の中で。同様に、 'Optional'が空のときにラムダ式が実行されないので、この場所で' orElse'を呼び出すのは意味がありません。 – Holger