我有一個類的結構是這樣的:的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