java通过读取本地文件获取反射方法参数,执行对象方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java通过读取本地文件获取反射方法参数,执行对象方法相关的知识,希望对你有一定的参考价值。

运用到的知识点 IO流, 集合properties   反射

在工程目录下新建file   config.properties

#one time only can run one  method
className=demo03.Student
methodName=study
#className=demo03.Person
#methodName=eat
#className=demo03.Work
#methodName=job

创建三个类Person Worker  Student 

package demo03;

public class Student {
    public void study(){
        System.out.println("学生在学习");
    }
}
package demo03;

public class Person {
    public void eat(){
        System.out.println("人在吃。。。");
    }
}
package demo03;

public class Worker {
    public void job(){
        System.out.println("上班族在工作");
    }
}

测试类Test

package demo03;

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

/*
 *  调用Person方法,调用Student方法,调用Worker方法
 *    类不清楚,方法也不清楚
 *    通过配置文件实现此功能
 *        运行的类名和方法名字,以键值对的形式,写在文本中
 *        运行哪个类,读取配置文件即可
 *    实现步骤:
 *        1.准备配置文件,键值对
 *        2.IO流读取配置文件 Reader
 *        3.文件中的键值对存储到集合中 Properties
 *          集合保存的键值对,就是雷鸣和方法名
 *        4.反射获取指定类的Class文件对象
 *        5.class文件对象,获取指定的方法
 *        6.运行方法
 */
public class Test {
    public static void main(String[] args) throws Exception{
        //IO流读取配置文件
        FileReader fr=new FileReader("config.properties");
        //创建集合对象
        Properties pro=new Properties();
        //调用集合方法load,传递流对象
        pro.load(fr);
        fr.close();
        String className=pro.getProperty("className");
        String methodName=pro.getProperty("methodName");
        //反射获取指定类的class文件对象
        Class c=Class.forName(className);
        Object obj=c.newInstance();
        //获取指定的方法名
        Method method=c.getMethod(methodName);
        method.invoke(obj);
    }
}

 

以上是关于java通过读取本地文件获取反射方法参数,执行对象方法的主要内容,如果未能解决你的问题,请参考以下文章

java反射

java 通过反射怎么获取方法中参数值

JAVA反射问题,一个方法类的参数能否通过设置成泛型或者啥来接收反射的CLASS。

31反射(获取Class实例剖析运行时类的完整结构读取properties文件反射创建类越过泛型检查)枚举

java 通过反射怎么获取方法中参数值

在JAVA中,怎么利用反射获取一个方法?