zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    第一章 重构
    Android View的事件分发
    java.lang.NoSuchMethodError: android.view.View.setBackground
    handler消息机制
    魅族手机Listview下拉出现hold字样的奇葩问题解决方案
    数据结构--树,二叉树
    数据结构之栈和队列
    设计模式--六大原则
    ListView上下线添加
    Python 入门(七)函数
  • 原文地址:https://www.cnblogs.com/benjamin77/p/9146221.html
Copyright © 2011-2022 走看看