我有一个用例,其中有嵌套的类和顶级类的对象。我想得到一个在第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