Java 8可选获取(如果存在)

时间:2016-08-04 17:47:46

标签: java java-8 optional

我有这样的类结构:

public class Foo {
    private FooB fooB;

    public Optional<FooB> getFooB() {
        return Optional.ofNullable(fooB);
    }
}

public class FooB {
    private String a;
    private String b;

    public String getA() {
        return a;
    }

    public String getB() {
        return b;
    }
}

我想做的是这样的事情:

main() {
    //initialize a Foo object called foo
    String a = foo.getFooB().ifPresent(FooB::getA);
}

基本上,如果foo对象返回FooB,则从String a获取字段FooB并将其存储在本地变量String a中。我怎么能在一行中优雅地做到这一点?

2 个答案:

答案 0 :(得分:8)

getFooB()返回Optional<FooB>的实例时,要获得相应的getA()值,您需要使用map方法作为下一个:

Optional<String> a = foo.getFooB().map(FooB::getA);

答案 1 :(得分:-4)

12:04 AM