1. 程式人生 > 實用技巧 >Java 反射案例

Java 反射案例

1案例

需求:需要寫一個“框架”,不能改變該類的任何程式碼的前提下,可以幫我們建立任意類的物件,並且執行其中的任意方法

1.1實現

1.1.1配置檔案

1.將需要建立的物件的全類名和需要執行的方法定義在配置檔案中

在src的目錄下建立pro.properties檔案,具體配置檔案程式碼如下

className = com.levizhao.demo01.reflection.Student  //類的路徑
methodName = sleep //類中的函式

2.反射

1.在程式中載入讀取配置檔案

2.使用反射技術來載入類檔案進記憶體

3.建立物件

4.執行方法

ReflectTest.java程式碼如下

package com.levizhao.demo01.reflection;
/*
     框架類
 */

import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;

public class ReflectTest {
    public static void main(String[] args) throws  Exception {
        //可以建立任意類物件,可以建立任意類物件,執行任意方法
        //1.載入配置檔案
        //1.1建立Properties物件
        Properties pro = new Properties();
        //1.2載入配置檔案,轉換為一個集合
        //1.2.1獲取class目錄下的配置檔案
        ClassLoader classLoader = ReflectTest.class.getClassLoader();
        InputStream is = classLoader.getResourceAsStream("pro.properties");
        pro.load(is);

        //2.獲取配置檔案中的定義的資料
        String className = pro.getProperty("className");
        String methodName = pro.getProperty("methodName");

        //3.載入該類進記憶體
        Class aClass = Class.forName(className);

        //4.建立物件
        Object o = aClass.newInstance();
        //5.獲取方法物件
        Method method = aClass.getMethod(methodName);
        //6.執行方法
        method.invoke(o);
    }
}

3.總結

這樣的好處是僅更改配置檔案就可以增加程式的擴充套件性,不用再修改程式碼就可以實現程式碼的靈活變動。這就是反射的魅力!