java反射的简单应用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_33334951/article/details/102612231

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

猜你喜欢

转载自blog.csdn.net/qq_33334951/article/details/102612231