我有一个类的结构是这样的:的Java 8可选得到,如果现在
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为存在然后从FooB
获取字段String a
并将其存储在本地变量String a
中。我怎样才能做到这一点在1线优雅?
的问题是:你想发生,如果什么'可选'是空的?这正是可选的目的:迫使你考虑这种情况。 –
Tunaki
'ifPresent()'需要一个不能返回任何东西的消费者。虽然你可以给它一个有状态的消费者,但最好使用'map()'来阅读。你只需要再次处理产生的'Optional':'String a = foo.getFooB().map(FooB :: getA).orElse(null);' –
eckes