ich eine Klassenstruktur wie diese:Java 8 Optional erhalten, wenn vorhanden
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;
}
}
Was will ich so etwas wie dies zu tun ist:
main() {
//initialize a Foo object called foo
String a = foo.getFooB().ifPresent(FooB::getA);
}
Grundsätzlich, wenn das Objekt foo Foob als Geschenk zurück Holen Sie dann das Feld String a
von FooB
und speichern Sie es in der lokalen Variablen String a
. Wie kann ich das elegant in 1 Zeile machen?
Die Frage ist: Was Sie passieren soll, wenn 'Optional' ist leer? Genau dafür ist Optional: Zwing dich dazu, über diesen Fall nachzudenken. –
Tunaki
'ifPresent()' benötigt einen Verbraucher, der nichts zurückgeben kann. Während Sie es einem statusbehafteten Verbraucher geben könnten, ist es wahrscheinlich besser, zu lesen, um 'map()' zu verwenden. Sie müssen sich nur noch mit dem resultierenden 'Optional' befassen: 'String a = foo.getFooB(). Map (FooB :: getA) .oderElse (null);' –
eckes