如何自动实例化所有内部类

How to instantiate automatically all inner classes

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;
 }
}

我有以下 class 结构,有时内部 classes,当我用泛型 class 实例化时,只调用构造函数 A 而对象 A 是实例化,有没有办法用各自的默认构造函数为所有内部 classes 实例化所有对象。

下面是我使用的通用 class。

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。无需明确地担心所有内部 classes 实例化一个一个,我可以一次性完成吗?!

UPDATE:我已经更新了 class 代码, 这是我将与 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>

你弄错了。您假设包含 class 意味着外部 class 也拥有内部 class 的一个对象。但这不一定是真的。拥有内部 classes 是关于 范围,而不是隐式 拥有 内部 classes![=13= 的实例]

这样不行:

  • 除非 class A 包含 class B 或 C 的 字段 不需要(或方式) 在创建 A 的实例时创建 classes B 或 C 的实例
  • 反之亦然:为了创建 B 的实例,您 必须 提供 A 的实例。当您想要创建 C 对象时,您提供一个A和一个B对象。

而且你是直接使用new还是反射加newInstance()都没关系! (当然:它在可维护性和运行时性能成本方面很重要——只有在绝对需要时才应使用反射)

鉴于评论:如果您想要初始化内部 class 的 字段 ,那么您 必须 做那明确地。喜欢:

 public A() {
   myB = this.new B();
   myC = myB.new C();