可选 ifPresent Return 另一种类型

Optional ifPresent Return another type

和java 8个可选, 有没有办法写这行代码:

Bar bar = fooOpt.isPresent() ? new Bar(fooOpt.get().getX()) : null;

类似于:

Bar bar = fooOpt.ifPresent(f -> new Bar(f.getX()), null)

也许您正在寻找:

    Optional<Foo> fooOpt = ...
    Bar bar = fooOpt.map(foo -> new Bar(foo.getX()))
                    .orElse(null);

鉴于:

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

public class Bar {

    public Bar(Object x) {
        ...
    }
}