Java 如何自动实例化所有内部类
我有下面的类结构,有时还有更多的内部类,当我用一个泛型类实例化时,只有构造函数a被调用,对象a被实例化,有没有办法用相应的默认构造函数实例化所有内部类的所有对象 下面是我正在使用的泛型类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
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();