前提:Person类中有有参无参的构造函数,供测试用
package com.jk.fs;
import java.lang.reflect.Constructor;
/**
* 反射机制(获取Class中的构造函数)
* @author sx123
*
*/
public class ReflectgDemo {
public static void main(String[] args) throws Exception {
createNewObject2();
}
public static void createNewObject() throws Exception {
/**
* 早期,new的时候,先根据被new的类的名称找寻该类的字节码文件,并加载进内存,并创建该字节码文件对象,并接着
* 创建该字节文件的对应的person对象
*
*/
String name="com.jk.bean.Person";
//找寻该名称类文件并加载进内存,并产生Class对象
Class clazz = Class.forName(name);
//如何产生该类的对象
Object obj = clazz.newInstance();
}
public static void createNewObject2() throws Exception{
//com.jk.bean.Person p = new com.jk.bean.Person("小强",24);
/**
* 当要获取指定名称对应类中的所体现的对象时,而该对象初始化不使用空参数构造函数时
* 既然是通过指定的构造函数进行对象初始化,所以先获取到该构造函数,通过字节码文件对象即可完成
* 该方法是:getConstructor(parameterTypes)
*/
String name="com.jk.bean.Person";
//找寻该名称类文件并加载进内存,并产生Class对象
Class clazz = Class.forName(name);
//获取到了指定的构造函数对象
Constructor constructor= clazz.getConstructor(String.class,int.class);
//通过该构造器对象的newInstance方法进行对象的初始化
Object obj = constructor.newInstance("小明",35);
}
}