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


運用到的知識點 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);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM