【发布时间】:2018-03-05 07:05:10
【问题描述】:
我有一个公共类,里面有一个私有类:
public class A {
private class B
{
}
private final B b = new B();
public static void main(String[] args) {
Class<?> bClass = A.class.getDeclaredClasses()[0];
Constructor<?>[] declaredConstructors = bClass.getDeclaredConstructors();
System.out.println(declaredConstructors.length); //result = 2
}
}
问题是,B 类中声明的构造函数等于 2。
虽然在其他情况下,B 类中的构造函数数量等于 1:
public class A {
private class B
{
public B()
{
}
}
private final B b = new B();
public static void main(String[] args) {
Class<?> bClass = A.class.getDeclaredClasses()[0];
Constructor<?>[] declaredConstructors = bClass.getDeclaredConstructors();
System.out.println(declaredConstructors.length); //result = 1
}
}
和
public class A {
private class B
{
}
public static void main(String[] args) {
Class<?> bClass = A.class.getDeclaredClasses()[0];
Constructor<?>[] declaredConstructors = bClass.getDeclaredConstructors();
System.out.println(declaredConstructors.length); //result = 1
}
}
问题是为什么在第一种情况下有 2 个构造函数? 谢谢!
【问题讨论】:
-
为什么会出现这个问题?
-
为什么不看看那些构造函数是什么,而不是仅仅担心有多少。
-
@AndyTurner 虽然您肯定是对的,但综合构造函数的概念在阅读 javap 时并不明显。
-
@Henry,我希望有一个构造函数,但我得到了两个。如果 сonstructor 单独存在,为什么会有两个 сconstructor。
-
@AndyTurner 我写了这个作为一个例子,以确保有一个构造函数。
标签: java reflection