可选ifPresent返回另一种类型

tyr*_*pex 4 java optional java-8

使用java 8 Optional,有没有办法编写这行代码:

Bar bar = fooOpt.isPresent() ? new Bar(fooOpt.get().getX()) : null;
Run Code Online (Sandbox Code Playgroud)

就像是:

Bar bar = fooOpt.ifPresent(f -> new Bar(f.getX()), null)
Run Code Online (Sandbox Code Playgroud)

Har*_*ezz 12

也许您正在寻找:

    Optional<Foo> fooOpt = ...
    Bar bar = fooOpt.map(foo -> new Bar(foo.getX()))
                    .orElse(null);
Run Code Online (Sandbox Code Playgroud)

鉴于:

public class Foo {
    Object getX() {
        ...
    }
}

public class Bar {

    public Bar(Object x) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)