通过反射,我们可以获得一个类运行时的信息(属性,构造方法和普通方法),但是当我们是使用反射区获取一个类的内部类的构造方法时,会发现内部类默认的无参构造中会出现父类类型的参数
测试代码:
public class OuterClass {
class InnerClass{
}
}
注意:Class.forName()中的类名不能使用eclipse中的Copy qualified Name 来获取,应为内部类编译后会产生两个文件,具体做法是:到工程的根目录下,找到bin文件夹,java文件编译后的calss文件都放在这个目录下,找到编译后的内部类的class文件,复制类名,然后在前面加上包名即可
import java.lang.reflect.Constructor;
public class Test {
public static void main(String[] args) {
try {
Class clazz=Class.forName("reflect.OuterClass$InnerClass");
Constructor[] constructors = clazz.getDeclaredConstructors();
for(Constructor c:constructors){
System.out.println(c);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
结果&#x