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