美文网首页
Java入门--反射

Java入门--反射

作者: 王二麻子88 | 来源:发表于2020-12-20 23:51 被阅读0次

    Java入门--反射(Reflect)

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

    • 创建配置文件对象 new Properties()
    • 通过当前类获取类加载器 CurrentClass.class.getClassLoader()
    • 通过类加载器获取配置文件资源 classLoader.getResourceAsStream("project.properties")
    • 获取配置文件的相关信息 pro.getProperty("className")
    • 获取需要加载的类以及方法 Class.forName(className), class.getMethod(methodName)
    • 调用方法 method.invoke(obj) (参数信息: 方法相应的类名, 以及方法参数)
    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);
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Java入门--反射

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