配置文件与反射案例

本文介绍如何使用配置文件驱动,通过反射创建任意类的对象实例,并调用其指定的方法。通过Person和Sleep类的实例,展示如何读取pro.properties配置文件,进行类加载、反射操作,实现灵活的动态执行。
摘要由CSDN通过智能技术生成

配置文件与反射案例

案例:写一个框架,该框架可以帮我们创建任意类对象,并且执行其中的任意方法

案例实现:

1.Person类与其中的eat方法

package cn.raincoding;

public class Person {

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

2.Sleep方法与其中的sleep方法

public class Sleep {
    public static void main(String[] args) {
        System.out.println("sleep....");
    }
}

3.配置文件pro.properties

className = cn.raincoding.Person
Method = eat

4.主类

步骤:
操作配置文件…

1.创建properties对象,把pro.porperties配置文件加载进内存(load方法中的参数需要pro.porperties的字节流对象)

1.1 先用类加载器把主类加载进内存
1.2 从加载后的主类出发找到配置文件pro.properties,并获得其字节流对象

2.获取配置文件中的数据

开始反射…

1.加载某类进内存
2.创建类的对象
3.获取对象的方法
4.执行方法

主类代码:

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

public class Test_reflection {
    public static void main(String[] args) throws IOException, ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
        //1.创建Properties对象
        Properties pro = new Properties();

        //2.定义一个类加载器对象,并把Test_reflection加载进内存
        ClassLoader classLoader = Test_reflection.class.getClassLoader();

        //3.得到配置文件pro.properties的字节流对象
        InputStream is = classLoader.getResourceAsStream("pro.properties");

        //4.加载字节流进内存
        pro.load(is);


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


        //反射开始
        //1.加载该类进内存
        Class cls = Class.forName(className);

        //创建对象
        Object obj = cls.newInstance();

        //获取方法对象
        Method amethod = cls.getDeclaredMethod(methodName);

        //执行方法
        amethod.invoke(obj);
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值