JAVA--用反射读取配置文件

//配置文件
test.properties
	className = Reflection.Student
	methodName = show
	
test.txt
	className = Reflection.Student
	methodName = show

package Reflection;

public class Student {
    public void show(){
        System.out.println("hhh");
    }
    public void show(String s){
        System.out.println(s);
    }
}

package Reflection;


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

public class ReflectFile {

    //txt、properties
    public static void main(String[] args) throws Exception{
        //获取配置文件对象
        Properties pro=new Properties();
        //方式1
//        //获取输入流
//        FileReader in = new FileReader("test.txt");
//        //将流加载到配置文件对象中
//        pro.load(in);
        //方式二
        pro.load(ReflectFile.class.getClassLoader().getResourceAsStream("test.properties"));
        //通过反射获取Class对象
        String forName=pro.getProperty("className");
        Class stuClass=Class.forName(forName);
        //获取方法
        String methodName=pro.getProperty("methodName");
        Method m=stuClass.getMethod(methodName);
        //调用方法
        m.invoke(stuClass.getConstructor().newInstance(),null);
        //获取方法
        methodName=pro.getProperty("methodName");
        m=stuClass.getMethod(methodName,String.class);
        //调用方法
        m.invoke(stuClass.getConstructor().newInstance(),"null");


    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,可以通过反射来动态地获取类和方法的信息。而配置文件则是一种常用的存储配置数据的方式。因此,可以使用反射读取配置文件中的数据,并根据这些数据来动态地创建对象或调用方法。 具体来说,可以使用Java的Properties类来读取配置文件中的数据,例如: ``` Properties prop = new Properties(); prop.load(new FileInputStream("config.properties")); ``` 这里假设配置文件名为config.properties,可以通过load方法将其读入到Properties对象中。然后可以通过getProperty方法来获取指定属性的值,例如: ``` String className = prop.getProperty("class"); Class clazz = Class.forName(className); ``` 这里假设配置文件中有一个名为class的属性,其值为要创建对象的类的全限定名。可以通过getProperty方法获取该属性的值,然后使用Class.forName方法来获取该类的Class对象。 接下来,就可以使用反射来创建对象或调用方法了,例如: ``` Object obj = clazz.newInstance(); Method method = clazz.getMethod("methodName", parameterTypes); method.invoke(obj, args); ``` 这里假设要调用名为methodName的方法,并且该方法需要传入参数args。可以使用getMethod方法获取该方法的Method对象,然后使用invoke方法调用该方法。 当然,这只是一个简单的示例,实际应用中可能需要更复杂的操作。不过,通过反射配置文件的结合,可以实现更加灵活和动态的程序设计。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值