我有这样的类结构:
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
中。我怎么能在一行中优雅地做到这一点?
答案 0 :(得分:8)
当getFooB()
返回Optional<FooB>
的实例时,要获得相应的getA()
值,您需要使用map
方法作为下一个:
Optional<String> a = foo.getFooB().map(FooB::getA);
答案 1 :(得分:-4)
12:04 AM