我的数据模型
Class A
fieldA1 : primitive dataType
fieldA2 : primitive dataType
fieldA3 : NON-primitive dataType (Class B)
fieldB1 : primitive dataType
fieldB2 : primitive dataType
fieldB3 : NON-primitive dataType (Class C)
fieldC1 : primitive dataType
fieldC2 : primitive dataType
fieldC3 : NON-primitive dataType (Class D)
fieldD1 : primitive dataType
fieldD2 : primitive dataType
我的复杂对象是(Class A
)
我的问题是
当我尝试initialize
我的复杂java对象时
第一级中的所有子NON-Primitive字段将为null
例如
A a = new A();
a.fieldA3 -> null
a.fieldA3.fieldB3 -> cant access it (parent is null object)
a.fieldA3.fieldB3.fieldC3 -> cant access it (parent is null object)
任何方式/模式让我能够 初始化复杂的java对象时 所有子NON-Primitive字段也将初始化?
例如
A a = new A();
a.fieldA3 -> new B();
a.fieldA3.fieldB3 -> new C();
a.fieldA3.fieldB3.fieldC3 -> new D();
答案 0 :(得分:3)
为什么不这么简单?
public class A {
B fieldA3;
public A() {
fieldA3 = new B();
}
}
public class B {
C fieldB3;
public B() {
fieldB3 = new C();
}
}
答案 1 :(得分:1)
你必须在A类中编写一个构造函数,并为非原始字段显式创建所有对象。对于初始化,你必须只通过构造函数。
答案 2 :(得分:1)
将相应类型的instance
分配给构造函数中的字段。
public class A{
private B fieldA3;
public A(){
this.fieldA3 = new B();
}
}
或者只是在声明中指定它们。确保B,C,D
在其构造函数中实例化其字段。
public class A{
private B fieldA3 = new B();
public A(){
}
}
答案 3 :(得分:1)
使用声明变量的类的实例初始化成员变量。所以
class A{
private B other;
}
变为
class A{
private B other = new B(..)
}