Замена повторяющегося оператора get на Java 8 Необязательно
У меня есть сценарий использования, где у меня есть вложенные классы и объект высшего класса. Я хочу получить значение, которое находится на N-м уровне. Я использую геттеры для достижения этой цели, чтобы избежать NPE. Пример кода (при условии, что есть геттеры)
class A {
String a1;
String getA1() {
return a1;
}
}
class B {
A a;
A getA() {
return a;
}
}
class C {
B b;
B getB() {
return b;
}
}
class D {
C c;
C getC() {
return c;
}
}
Если у меня есть объектd
классаD
и хочу получитьString a1
изA
, что я делаю, это следующее:
String getAValue(D d) {
String aValue = null;
if(d != null && d.getC() != null && d.getC().getB() != null && d.getC().getB().getA() != null) {
aValue = d.getC().getB().getA().getA1();
}
return aValue;
}
Этот повторяющийся выглядит действительно уродливо. Как мне избежать этого, используя java8 Необязательно?
РЕДАКТИРОВАТЬ: я не могу изменить вышеупомянутые классы. Предположим, этот d-объект возвращается мне в качестве служебного вызова. Я подвержен только этим добытчикам.