反射练习(编写一个小框架)-解析配置文件中的信息


/** 步骤:
      1.创建配置文件->properties
        存的信息键值对的形式
        如果将配置文件放在src下面,idea生成的out目录中这个配置文件会显示在out的项目路径下
        我们给用户class文件的时候,也需要把配置文件给用户,不然项目无法读取配置文件中的信息,也就无法执行

        src 存放的是源代码 编译后产生的class文件,同步的,但是生成的out路径,下没有src这个目录,以为src存放源代码的

        问题:如何读取src目录下的文件?
        直接new FileInputStream(模块名\\src\\配置文件名)是不行的
        因为这样写,而我们给的用户是out下的资源,而out下存放的class文件路径是没有src
        所以这样写,给了用户,用户一使用,直接就读不到这个配置文件了

        解决:
        使用类的加载器
        ClassLoader类定义方法
        InputStream getResourceAsStream("直接写文件名")返回一个字节输入流
        此流会自动从类目录下扫描文件读取 ->直接扫描src下的配置文件

      2.利用IO流读取配置文件
      读到Properties集合中

      3.获取Properties中对应的值
      获取类的全限定名
      方法名
      4.利用反射获取类的Class对象
      利用反射去指定方法*/
public class Demo_pro {
    public static void main(String[] args) throws Exception {
        //获取类加载器
        ClassLoader classLoader = Demo_pro.class.getClassLoader();
        //使用类加载器的输入流读取配置文件
        InputStream resourceAsStream = classLoader.getResourceAsStream("pro.properties");
        //创建Properties集合
        Properties properties = new Properties();
        properties.load(resourceAsStream);
        //获取配置文件中的值
        String className = properties.getProperty("className");
        String show_method = properties.getProperty("methodName");
        System.out.println(show_method);
        //根据获取出来的className创建Student的Class对象
        Class aClass = Class.forName(className);
        //获取有参构造方法
        Constructor constructor = aClass.getConstructor(String.class, int.class);
        //创建Student对象
        Object o = constructor.newInstance("yutan", 25);
        //根据从配置文件中解析出来的方法名去获取Student中的方法
        Method method = aClass.getMethod(show_method);
        //执行方法
        method.invoke(o);

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值