通过反射,我们可以获得一个类运行时的信息(属性,构造方法和普通方法),但是当我们是使用反射区获取一个类的内部类的构造方法时,会发现内部类默认的无参构造中会出现父类类型的参数
测试代码: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(); } }}
结果: