使用Java Reflection机制,我们可以在运行时探寻一个类的构造函数并且生成该类的实例。这些是通过 java.lang.reflect.Constructor 实现的。
Obtaining Constructor Objects
如下方法可以获得一个类的所有public构造函数
Class myClass = Class.forName("A");
Constructor[] constructors = myClass.getConstructors();
如果知道了构造函数的参数类型,那么就可以直接查询该public constructor
A.class文件
package tao.xiao.action;
public class A implements IT1 {
public A(String s) {}
public A(double x, String y, int[] z) {}
public A(int a) {}
}
HelloJava.class文件的main部分
Class myClass = Class.forName("tao.xiao.action.A");
Constructor constructor = myClass.getConstructor(new Class[] {String.class});
System.out.println(constructor);
constructor = myClass.getConstructor(new Class[] {double.class, String.class, int[].class});
System.out.println(constructor);
constructor = myClass.getConstructor(new Class[] {int.class});
System.out.println(constructor);
结果为
public tao.xiao.action.A(java.lang.String)
public tao.xiao.action.A(double,java.lang.String,int[])
public tao.xiao.action.A(int)