java高级反射之获取构造函数(二)

前提: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);
        
        
        
    }

}
 

猜你喜欢

转载自blog.csdn.net/youjiangtengwan1/article/details/83502812