1. 程式人生 > >java通過讀取本地文件獲取反射方法參數,執行對象方法

java通過讀取本地文件獲取反射方法參數,執行對象方法

invoke 文本 [] run pac 執行 read prop col

運用到的知識點 IO流, 集合properties 反射

在工程目錄下新建file config.properties

#one time only can run one  method
className=demo03.Student
methodName=study
#className=demo03.Person
#methodName=eat
#className=demo03.Work
#methodName=job

創建三個類Person Worker Student

package demo03;

public class Student {
    
public void study(){ System.out.println("學生在學習"); } }
package demo03;

public class Person {
    public void eat(){
        System.out.println("人在吃。。。");
    }
}
package demo03;

public class Worker {
    public void job(){
        System.out.println("上班族在工作");
    }
}

測試類Test

package demo03;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Properties;

/*
 *  調用Person方法,調用Student方法,調用Worker方法
 *    類不清楚,方法也不清楚
 *    通過配置文件實現此功能
 *        運行的類名和方法名字,以鍵值對的形式,寫在文本中
 *        運行哪個類,讀取配置文件即可
 *    實現步驟:
 *        1.準備配置文件,鍵值對
 *        2.IO流讀取配置文件 Reader
 *        3.文件中的鍵值對存儲到集合中 Properties
 *          集合保存的鍵值對,就是雷鳴和方法名
 *        4.反射獲取指定類的Class文件對象
 *        5.class文件對象,獲取指定的方法
 *        6.運行方法
 
*/ public class Test { public static void main(String[] args) throws Exception{ //IO流讀取配置文件 FileReader fr=new FileReader("config.properties"); //創建集合對象 Properties pro=new Properties(); //調用集合方法load,傳遞流對象 pro.load(fr); fr.close(); String className=pro.getProperty("className"); String methodName=pro.getProperty("methodName"); //反射獲取指定類的class文件對象 Class c=Class.forName(className); Object obj=c.newInstance(); //獲取指定的方法名 Method method=c.getMethod(methodName); method.invoke(obj); } }

java通過讀取本地文件獲取反射方法參數,執行對象方法