一、需求:通过加载配置文件,并利用反射运行配置文件中指定类的对应方法
二、具体实现:
现有一个Person类,如下:
public class Person {
private String name;
private int age;
public Person() {
}
Person(String name, int age) {
this.name = name;
this.age = age;
}
public void sayHello() {
System.out.println("name:"+this.name+"-->"+this.age);
}
}
为了方便,此处使用class.txt文件来代替配置文件。
className = study01.Person
methodName = sayHello
测试如下:
public class Test {
public static void main(String[] args) throws Exception {
//创建配置文件实例
Properties prop = new Properties();
//加载配置文件
FileInputStream is = new FileInputStream("src/study01/class.txt");
prop.load(is);
//加载需要运行的类名和方法名
String className = prop.getProperty("className");
String menthodName = prop.getProperty("methodName");
//创建Class对象
Class c = Class.forName(className);
//获取构造方法
Constructor con = c.getDeclaredConstructor(String.class, int.class);
//创建实例
Object obj = con.newInstance("跑调大叔", 20);
//获取需要运行的Method对象
Method m = c.getDeclaredMethod(menthodName);
//运行方法
m.invoke(obj);
}
}
测试结果如下:
现在如果需要运行不同类以及不同类中的方法时,只需要更改配置文件中的键值对即可。
Java新手,若有错误,欢迎指正!