反射机制(二)

本文例题同样出自B站UP主黎曼的猜想Java基础+进阶教程P466节
需求:写一个框架,不能改变该类的任何代码,帮助我们创建任意类的对象,并且执行其中任意方法
实现:
1、配置文件
2、反射、
步骤:
1、将需求创建的对象的全类名和需要执行的方法定义在配置文件中
2、在程序中家在读取配置文件
3、使用反射技术来家在类文件进内存
4、创建对象
5、执行方法
Person类

package com.company;

public class Person {
    public void eat(){
        System.out.println("eat...");
    }
}

pro.properties文件:

className=com.company.Person
methodName=eat

main函数:

package com.company;

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

public class Main {

    public static void main(String[] args) throws Exception{
    // write your code here
 //       System.out.println("123abc");
        /*
        需求:写一个框架,不能改变该类的任何代码,帮助我们创建任意类的对象,并且执行其中任意方法
        实现:
        1、配置文件
        2、反射、
        步骤:
        1、将需求创建的对象的全类名和需要执行的方法定义在配置文件中
        2、在程序中家在读取配置文件
        3、使用反射技术来家在类文件进内存
        4、创建对象
        5、执行方法
        * */
        // 1、加载配置文件
        // 1.1 创建Properties对象
        Properties pro = new Properties();
        // 1.2 加载配置文件,转换为一个集合
        ClassLoader cl = Main.class.getClassLoader();
        InputStream is = cl.getResourceAsStream("pro.properties");
        pro.load(is);

        // 2、获取配置文件中定义的数据
        String className = pro.getProperty("className");
        String methodName = pro.getProperty("methodName");

        // 3、加载该类进内存
        Class cls = Class.forName(className);
        // 4、创建对象
        Object obj = cls.newInstance();
        // 5、获取方法对象
        Method method = cls.getMethod(methodName);
        // 6、执行方法
        method.invoke(obj);
    }
}

执行结果:


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容