版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
java反射的简单应用
- 简单实现从配置文件读取类的名称,然后通过反射找到这个类,再执行这个类中的方法。
- 创建接口文件:ITask.class
- 这个文件在inter包中。
package inter;
public interface ITask {
void start();
}
- 创建目标Java文件:TaskA.class
- 这个文件在test包里,TaskA类实现ITask接口。
- TaskA类就是最后要通过反射找到,并执行其中方法的目标类。
package test;
import inter.ITask;
public class TaskA implements ITask {
@Override
public void start(){
System.out.println("Start TaskA!");
}
}
- 创建配置文件:tasks.properties
- value值为目标类的名称,包含包路径。
scheduleTask=test.TaskA
- Main.class
- Main中并导入test包
import inter.ITask;
import java.io.*;
import java.util.Properties;
public class Main {
public static void main(String[] args) throws Exception {
String scheduleTaskName;
String propertiesFileName = "tasks.properties";
ITask mTask;
//获取配置文件的路径
String root = System.getProperty("user.dir");
String filePath = root + File.separator + "src" + File.separator + propertiesFileName;
//从配置文件读取要执行的类名称
Properties properties = new Properties();
BufferedReader inputStream = new BufferedReader(new FileReader(filePath));
properties.load(inputStream);
scheduleTaskName = (String) properties.get("scheduleTask");
//通过反射找到要执行的类,并执行类中的方法
Class taskAClass = Class.forName(scheduleTaskName);
mTask = (ITask) taskAClass.getDeclaredConstructor().newInstance();
mTask.start();
}
}