问题如下:
已有一堆数据结构,全部为POJO,层次很深,经常需要如下代码:
if (a.getB() == null )
a.setB(new B());
if (a.getB().getC() == null)
a.getB().setC(new C());
if (a.getB().getC().getD() == null)
a.getB().getC().setD(new D());
........
a.getB().getC().getD().getE().....setZ("123");如何改进?
已有一堆数据结构,全部为POJO,层次很深,经常需要如下代码:
if (a.getB() == null )
a.setB(new B());
if (a.getB().getC() == null)
a.getB().setC(new C());
if (a.getB().getC().getD() == null)
a.getB().getC().setD(new D());
........
a.getB().getC().getD().getE().....setZ("123");如何改进?
a.setB(new B()); (set之前就做判断, 或者使用带参数的构造函数,使代码简洁)
if (a.getB().getC() == null)
a.setB(new B());
if (a.getB().getC() == null)//这个应该放在new B()里面判断做(或者init方法)
即
if(a.getB() == null)
a.setB(new B());public class B {
public B() {
this.c = new C();//这里继续初始化自己的东西
}
}
getBNotNull() {
if (B == null) {
return new B();
} else {
return B;
}
}
难道楼主不知道自己的构造函数是怎么构造的么?
新建了b的object,那b边是否有c的object应该是早定好的吧,如果不是的话,怎么对b的class编写构造函数?
POJO只有getXXX()和setXXX(),XXX是已经存在于该类的域。To vinegar111():
不一定的。如果将当作一棵树来看的化,这棵树新建的时候只有一个根节点。也就是说,A类的所有成员都等于null。如果我想设置a.b.c.d = 1,那我得先保证a,b,c != null