使用Java 反射,你可以在运行时检查类的构造函数并实例化对象。这是通过Java类的java.lang.reflect.Constructor完成的。本文将介绍Java Constructor对象。
1.获取 Constructor 对象
Constructor类是从Class对象获得的。这是一个例子:Class aClass = ...//obtain class object
Constructor[] constructors = aClass.getConstructors();
对于该类中定义的每个public构造函数,Constructor []数组将有一个与之对应的Constructor实例。
如果知道要访问的构造函数的精确参数类型,则可以这样做,而不是获取所有构造函数的数组。此示例返回给定类的公共构造函数,该构造函数使用String作为参数:Class aClass = ...//obtain class object
Constructor constructor = aClass.getConstructor(new Class[]{String.class});
如果没有构造函数与给定的构造函数参数匹配,上面例子为String.class,则抛出NoSuchMethodException。
2.构造函数参数
你可以像这样读取给定构造函数的参数:Constructor constructor = ... // obtain constructor - see above
Class[] parameterTypes = constructor.getParameterTypes();
3.使用构造函数对象实例化对象
你可以像这样实例化一个对象://get constructor that takes a String as argument
Constructor constructor = MyObject.class.getConstructor(String.class);
MyObject myObject = (MyObject) constructor.newInstance("constructor-arg1");
Constructor.newInstance()方法采用可选数量的参数,但是你必须在要调用的构造函数中为每个参数提供一个值。上面例子中,它是一个采用String的构造函数,因此必须提供一个String。