Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何自动实例化所有内部类_Java_Scope_Inner Classes - Fatal编程技术网

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

Java 如何自动实例化所有内部类,java,scope,inner-classes,Java,Scope,Inner Classes,我有下面的类结构,有时还有更多的内部类,当我用一个泛型类实例化时,只有构造函数a被调用,对象a被实例化,有没有办法用相应的默认构造函数实例化所有内部类的所有对象 下面是我正在使用的泛型类 public class A{ private String A1; private B b; public class B{ private String B1; private C c; private D d; public class C

我有下面的类结构,有时还有更多的内部类,当我用一个泛型类实例化时,只有构造函数a被调用,对象a被实例化,有没有办法用相应的默认构造函数实例化所有内部类的所有对象

下面是我正在使用的泛型类

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包含类B或C的字段,否则在创建类A的实例时,没有必要创建类B或C的实例
  • 反过来说:为了创建B的实例,你必须提供A的实例。当你想创建C对象时,你必须提供A和B对象
无论您是直接使用
new
,还是使用reflection和
newInstance()
!(当然:它在可维护性和运行时性能成本方面很重要——只有在绝对需要时才应该使用反射)

给出注释:如果希望初始化内部类的字段,那么必须显式地执行该操作。比如:

<?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>

你把事情搞错了。假设封闭一个类意味着外部类也拥有内部类的一个对象。但这并不一定是真的。拥有内部类是关于作用域,而不是隐式拥有内部类的实例

它不是这样工作的:

  • 除非类A包含类B或C的字段,否则在创建类A的实例时,没有必要创建类B或C的实例
  • 反过来说:为了创建B的实例,你必须提供A的实例。当你想创建C对象时,你必须提供A和B对象
无论您是直接使用
new
,还是使用reflection和
newInstance()
!(当然:它在可维护性和运行时性能成本方面很重要——只有在绝对需要时才应该使用反射)

给出注释:如果希望初始化内部类的字段,那么必须显式地执行该操作。比如:

<?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>

抱歉不提,是的,类A包含内部类的字段。我在所有内部类中都有一个默认构造函数。“无论您是直接使用
new
还是使用反射和
newInstance()
”——当然,除了
newInstance
是该类的指定(无参数)构造函数的运行时查找。它使用反射,速度慢得多。似乎不容易!!,当我不得不做很多这些的时候。我同意你的回答,我知道这是一种方法。我会等一段时间。在那之前,@McEmperon在谈到反思时有点含蓄,但是,好吧,我重新改写了我的答案。@GhostCat确实是,但考虑到OP在这个主题上相对较新,所以将其明确化总是好的。;-)抱歉不提,是的,类A包含内部类的字段。我在所有内部类中都有一个默认构造函数。“无论您是直接使用
new
还是使用反射和
newInstance()
”——当然,除了
newInstance
是该类的指定(无参数)构造函数的运行时查找。它使用反射,速度慢得多。似乎不容易!!,当我不得不做很多这些的时候。我同意你的回答,我知道这是一种方法。我会等一段时间。在那之前,@McEmperon在谈到反思时有点含蓄,但是,好吧,我重新改写了我的答案。@GhostCat确实是,但考虑到OP在这个主题上相对较新,所以将其明确化总是好的。;-)您想实例化所有内部类有什么具体原因吗?是的,我正在尝试将其映射到XML-使用Jackson,有时我不需要所有的类对象,有时我需要所有的类对象。根据我的要求,我必须实例化所有必要的对象,以形成外部类对象A。我正在寻找一种方法,以某种方式实例化所有内部类的默认构造函数,并计划
仅设置所需的内部成员,我不希望任何内部类对象指向null。@Ivonet我将忽略它。对于所有被否决的人,我想知道如果我实例化所有内部类对象,它会有什么错误的功能,我只是要求一个更简单的方法,我没有要求@GhostCat建议什么,我只是问有没有办法一次就完成!!请仔细阅读问题。我认为这是一个典型的问题情况。你最好给出一个小而“完整”的图片。给我们看一点xml,还有你的pojo类,以及你打算在这里实现什么。你想实例化所有内部类有什么具体原因吗?是的,我正在尝试将它映射到xml-使用Jackson,有时我不需要所有的类对象,有时我需要所有的类对象。根据我的要求,我必须实例化所有必要的对象,以形成外部类对象A。我正在寻找一种方法,以某种方式实例化所有内部类的默认构造函数,并计划
仅设置所需的内部成员,我不希望任何内部类对象指向null。@Ivonet我将忽略它。对于所有被否决的人,我想知道如果我实例化所有内部类对象,它会有什么错误的功能,我只是要求一个更简单的方法,我没有
 public A() {
   myB = this.new B();
   myC = myB.new C();