通过反射运行配置文件内容
class.txt文件中的内容:
className=day27.Worker
methodName=love
public classWorker {
public void love() {
System.out.println("爱生活,爱工作");
}
}
import java.io.FileReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Properties;
/*
* 通过配置文件运行类中的方法
*
* 反射:
* 需要有配置文件配合使用。
* 用class.txt代替。
* 并且你知道有两个键。
* className
* methodName
*/
public class Test {
publicstatic void main(String[] args) throws Exception {
//反射前的做法
//Student s = new Student();
//s.love();
//Teacher t = new Teacher();
//t.love();
//Worker w = new Worker();
//w.love();
//反射后的做法
//加载键值对数据
Propertiesprop = new Properties();
FileReaderfr = new FileReader("class.txt");
prop.load(fr);
fr.close();
//获取数据
StringclassName = prop.getProperty("className");
StringmethodName = prop.getProperty("methodName");
//反射
Classc = Class.forName(className);
Constructorcon = c.getConstructor();
Objectobj = con.newInstance();
//调用方法
Methodm = c.getMethod(methodName);
m.invoke(obj);
}
}
运行结果:
爱生活,爱工作