Java入门--反射

2020-12-20  本文已影响0人  王二麻子88

Java入门--反射(Reflect)

利用反射和配置文件, 加载不同的类和方法

package io.github.wangermaizi.day14;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;

// 根据配置文件调用不同的代码
public class ReflectTest {
    public static void main(String[] args) throws Exception {
        // 1. 创建配置文件对象 (常用操作)
        Properties pro = new Properties();
        // 2. 获取配置文件路径
        // 2.1 获取class目录下的配置文件
        ClassLoader classLoader = ReflectTest.class.getClassLoader();
        //  ReflectTest.class.getClassLoader();  // 获取类字节码
        //  通过获取到的类加载器, 获取配置文件的字节流
        InputStream is = classLoader.getResourceAsStream("pro.properties");
        // 3. 加载配置文件(或者说加载文件流)
        pro.load(is);  // --> 此处有可能会报错

        // 4. 获取配置文件中定义的信息
        String className = pro.getProperty("className");
        String methodName = pro.getProperty("methodName");

        // 通过类名调用方法名
        Class aClass = Class.forName(className);
        Object obj = aClass.newInstance();
        // 获取方法对象
        Method method = aClass.getMethod(methodName);
        // 调用方法对象
        method.invoke(obj);
    }
}

上一篇下一篇

猜你喜欢

热点阅读