我有一個用例,其中有嵌套的類和頂級類的對象。我想得到一個在第N級的價值。我重複使用getter來達到這個目的,以避免NPE。示例代碼(假設干將在那裏)使用Java 8替換重複的get語句可選
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;
}
這重複的a看起來真的很難看。我如何通過使用java8來避免它可選?
編輯:我不能修改上述類。假設這個d對象作爲服務調用返回給我。我只接觸到這些獲得者。
'map(D :: getC)'也適用,如果'getC'返回可爲空的'C'。 – ZhongYu