反射:通过配置文件运行类中的方法【Java学习】

反射:通过配置文件运行类中的方法



实验代码

Student类

Student.java

package ReflectTest;

public class Student {
    public void study(){
        System.out.println("好好学习,天天向上");
    }
}

配置文件:class.txt

可以通过改动className来改变要运行的类
通过改动methodName来改变要运行的方法这里类需要是public

className=ReflectTest.Student
methodName=study

主方法代码

ReflectTest1.java

package ReflectTest;

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

public class ReflectTest1 {
    public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
        /*
            反射练习:通过配置文件运行类中的方法
            class.txt
            class.Name=xxx
            methodName=xxx
         */

        //加载数据
        Properties prop = new Properties();
        FileReader fr = new FileReader("C:\\Users\\Linyz\\IdeaProjects\\First\\src\\class.txt");
        prop.load(fr);
        fr.close();

        String className = prop.getProperty("className");
        String methodName = prop.getProperty("methodName");

        //创建Class对象
        Class<?> c = Class.forName(className);
        Constructor<?> con = c.getConstructor();
        Object obj = con.newInstance();

        //通过getMethod方法获取Student类的study成员方法
        Method method = c.getMethod(methodName);
        //通过invoke方法调用study方法
        method.invoke(obj);
    }
}

Properties类概述

1.是一个map体系的集合类。2.Properties可以保存到流中或者从流中加载。

作为集合的特有方法

1.Objec setProperty(String Key,String value):设置集合的键和值,调用底层Hashtable方法
2.String getProperty(String Key):指定键搜索值`该实验用到这个方法`
3.Set<String> stringPropertyNames():返回一个不可修改的键集,其中键是字符串

和IO流结合的方法

1.void load(Inputstream inStream):从输入`字节流`读取属性列表(键和元素对)
2.void load(Reader reader):从输入`字符流`读取属性列表(键和元素对)
3.void store(OutputStream out,String comments):将此属性列表写入Properties表中,适用于`字节流`使用的load
4.void store(Writer writer,String comments):将此属性列表写入Properties表中,适用于`字符流`使用的load

总结

Java基础学习小练习,欢迎讨论
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值