BenjaminYang In solitude, where we are least alone

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);
    }
}

 

posted @ 2018-06-06 17:18  benjamin杨  阅读(1907)  评论(0编辑  收藏  举报