私はネストされたクラスとトップクラスのオブジェクトを持つユースケースを持っています。私はN番目のレベルにある値を取得したい。私はNPEを避けるためにゲッターを繰り返し使用しています。サンプルコード(仮定ゲッターがある)繰り返しのget文をJava 8に置き換えるオプション
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
を持っている、とA
のString a1
を取得したい場合は、私がやっていることは以下の通りです:
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オブジェクトがサービスコールとして私に返されたとします。私はこれらのゲッタにのみさらされています。
'getC'がnullableの' C'を返す場合、 'map(D :: getC)'も動作します。 – ZhongYu