public class A{
private String A1;
private B b;
public class B{
private String B1;
private C c;
private D d;
public class C{
private String C1;
}
public class D{
private String D1;
}
}
我有以下类结构有时会有更多内部类,当我使用泛型类进行实例化时,只调用构造函数A并实例化对象A,是否可以实例化所有内部类的所有对象有相应的默认构造函数。
我正在使用的通用类如下。
public class GenericClass<O> {
private Class<O> clazz;
public GenericClass(Class<O> clazz){
this.clazz = clazz;
}
public O get() throws InstantiationException, IllegalAccessException{
return (O) clazz.newInstance();
}
}
当我只做clazzO.newInstance()
时,B和C将指向null。如果没有明确地担心所有内部类的实例化,我可以一次性完成吗?!
更新:我更新了类代码, 以下是我将与Jackson一起获得的示例XML。
<?xml version="1.0" encoding="UTF-8"?>
<A>
<A1>Outer Class A</A1>
<B>
<B1>Class B</B1>
<C>
<C1>Class C</C1>
</C>
<D>
<D1>Class D</D1>
</D>
</B>
</A>
答案 0 :(得分:2)
你这里弄错了。您假设包含一个类意味着外部类还拥有内部类的一个对象。但这不一定是真的。内部类是关于作用域,而不是隐含拥有内部类的实例!
它不起作用:
如果您直接使用new
或反射和newInstance()
,则无关紧要! (当然:它在可维护性和运行时性能成本方面很重要 - 只有在绝对需要的时候才能使用反射)
鉴于评论:如果您希望初始化内部类的字段,那么有明确地执行此操作。像:
public A() {
myB = this.new B();
myC = myB.new C();