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