java代码在计算机中经历的三个阶段,反射的原理

package cn.itcast.junit.fanshe;

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

public class DemoTest {
    public static void main(String[] args) throws IOException, ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
        //创建任意的类对象,可以执行任一方法
        // 1.读取配置文件
        // 1.1创建Properties对象(这个对象是集合中唯一的和IO流相关的集合对象)
        Properties pro = new Properties();
        //1.2加载配置文件,要想找到配置文件,首先要的到类加载器对象
        ClassLoader classLoader = DemoTest.class.getClassLoader();
        //2.找到文件,读取到内存中
        InputStream is = classLoader.getResourceAsStream("pro.properties");
        //读取文件,获取文件中的配置信息
        pro.load(is);
        String name = pro.getProperty("ClassName");
        String method = pro.getProperty("Method");
        //3.加载到内存中
        Class obj = Class.forName(name);
        //4.创建对象
        Object o = obj.getDeclaredConstructor().newInstance();
        //5.获取方法
        Method method1 = obj.getMethod(method);
        //6.调用执行
        method1.invoke(o);


    }
}
反射案例,执行任意类

 

原文地址:https://www.cnblogs.com/bozhengheng/p/12209234.html