在反射动态机制生成对象的实体中有两种方法,一个针对无变量的构造方法,一个针对带参数的构造方法,,如果想调用无参数的构造函数直接调用Class类中的newInstance(),而如果想调用有参数的构造函数,则需要调用Constructor类中newInstance()方法,首先准备一个Class[]作为Constructor的参数类型。然后调用该Class对象的getConstructor()方法获得一个专属的Constructor的对象,最后再准备一个Object[]作为Constructor对象昂的newInstance()方法的实参。
在这里需要说明的是 只有两个类拥有newInstance()方法,分别是Class类和Constructor类,Class类中的newInstance()方法是不带参数的,而Constructro类中的newInstance()方法是带参数的需要提供必要的参数。
下面提供的代码是构造Customer2类的三个构造函数
java 代码
package cn.com.reflection;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
/**
* 在反射Reflection机制中,想生成一个类的实例有两种方法
* 一个是针对无参数的构造函数 ,另一个是针对有参数的构造函数
*
*/
public class ReflecTest3 {
/**
* 反射的动态性质之一: 运行期动态生成Instance
*/
public static void main(String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, SecurityException, InvocationTargetException, NoSuchMethodException {
Customer2 customer=new Customer2();
Class cls=customer.getClass();
//获得Class所代表的对象的所有类型的构造函数Constructor的数组
Constructor ctor[]=cls.getDeclaredConstructors();
for(int i=0;i