美文网首页
反射读取配置文件来运行指定类

反射读取配置文件来运行指定类

作者: 勇者与王者 | 来源:发表于2019-10-08 00:11 被阅读0次

Person 类:

package Day32_Reflection.ReflectProperties;

/**
 * @Author quzheng
 * @Date 2019/10/7 23:46
 * @Version 1.0
 */
public class Person {
    public void eat(){
        System.out.println("人在吃饭");
    }
}

Student 类:

package Day32_Reflection.ReflectProperties;

/**
 * @Author quzheng
 * @Date 2019/10/7 23:46
 * @Version 1.0
 */
public class Student {
    public void study(){
        System.out.println("学生在学习");
    }
}

Worker 类:

package Day32_Reflection.ReflectProperties;

/**
 * @Author quzheng
 * @Date 2019/10/7 23:47
 * @Version 1.0
 */
public class Worker {
    public void work(){
        System.out.println("上班族在工作");
    }
}

反射类:

package Day32_Reflection.ReflectProperties;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Properties;

/**
 * @Author quzheng
 * @Date 2019/10/7 23:48
 * @Version 1.0
 *
 * 既能调用 Person 方法 也能调用 Student方法 也能调用 Worker方法
 * 通过 配置文件实现
 *      将 允许的类名和方法名 以键值对 存储在文本中
 *      1.准备配置文件
 *      2.IO流读取配置文件 Reader
 *      3.文件中键值对 存储到集合中 Properties
 *      4.反射 获取指定类的class文件 class 文件获取指定方法,并运行
 */
public class Test {
    public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException {
        // IO流读取配置文件
        FileReader r = new FileReader("D:\\Java_30Days\\src\\Day32_Reflection\\ReflectProperties\\config.properties");

        //创建集合对象
        Properties p = new Properties();

        // 调用集合方法 传递流对象
        p.load(r);
        r.close();

        // 通过键  获取值
        String className = p.getProperty("className");
        String methodName = p.getProperty("methodName");

        //反射获取指定类的 class 文件
        Class c = Class.forName(className);
        Method m = c.getMethod(methodName);

        Object obj = c.newInstance();
        m.invoke(obj);

    }
}

配置文件的键值对:config.properties
className=Day32_Reflection.ReflectProperties.Student
methodName=study

相关文章

  • 反射读取配置文件来运行指定类

    Person 类: Student 类: Worker 类: 反射类: 配置文件的键值对:config.prope...

  • 反射和注解的应用

    反射和注解的应用 一、利用Properties读取配置文件,再用反射进行获得类的方法调用 二、利用注解来简化读取配...

  • Java学习笔记 27 - 类的加载器、反射

    本文内容介绍1、类加载器2、反射构造方法3、反射成员变量4、反射成员方法5、反射配置文件运行类中的方法 01类加载...

  • 反射

    反射 1、什么是反射技术? 动态获取指定类以及类中的内容(成员),并运行其内容。应用程序已经运行,无法在其中进行n...

  • AOP

    AOP spring的IOC基于反射,通过读取配置文件获取对象的全限定类名,然后用反射创建,相当于是把BeanFa...

  • winform利用反射运行窗体

    今天想写个配置文件然后读取配置然后根据配置运行窗体 利用于反射Assembly.Load("程序集").Creat...

  • Java反射

    简单总结下什么是Java反射,怎么使用。 Java反射机制 反射就是指JVM运行期,获取指定类所有的属性和方法的一...

  • 2018-03-03-1.spring读取外部的资源配置文件

    1.1.1. 读取外部的资源配置文件 通过@PropertySource可以指定读取的配置文件,通过@Value注...

  • Java注解

    [[toc]] flag 解释注解的方式:反射!反射是jdk中提供的一种机制,通过读取编译后的运行文件,反向获取类...

  • 配置文件使用实例

    从配置文件读取内容进行实例化 读取配置文件的类 配置文件 使用配置文件

网友评论

      本文标题:反射读取配置文件来运行指定类

      本文链接:https://www.haomeiwen.com/subject/wyyvpctx.html