1. 程式人生 > >java高階反射之獲取建構函式(二)

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);
        
        
        
    }

}