首页 > 其他 > 详细

反射简易框架模拟

时间:2020-06-18 10:13:02      阅读:46      评论:0      收藏:0      [点我收藏+]

反射简易框架模拟

设计一个框架,可以运行任何类型的任何方法。要执行的类和方法在配置文件中指定。

className=com.homework_test.test04.Demo.Teacher
methodName=teaching
package com.homework_test.test04;

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

public class RunClass {
    public static void main(String[] args) throws InvocationTargetException, NoSuchMethodException, ClassNotFoundException, InstantiationException, IllegalAccessException {
        run();
        /*  打印输出的内容:
        className = com.homework_test.test04.Demo.Teacher
        methodName = teaching
        老师正在教课!!!

         */
    }

    public static void run() throws NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException, ClassNotFoundException {
        //创建属性集对象
        Properties pro = new Properties();
        //创建输出流,用来加载配置文件到Pro对象
        try(FileReader fr=new FileReader("day12_Junit,反射,注解,代理\\src\\com\\homework_test\\test04\\classInfo.properties")){
            pro.load(fr);
        } catch (IOException e) {
            e.printStackTrace();
        }

        //pro对象中,有键值对信息
        //1.获取className类名全名,创建相应的class对象
        String className = pro.getProperty("className");
        System.out.println("className = " + className);
        Class<?> cls = Class.forName(className);
        //2.获取指定方法的class对象
        String methodName = pro.getProperty("methodName");
        System.out.println("methodName = " + methodName);
        //获取方法的class文件对象
        Method method = cls.getDeclaredMethod(methodName);
        //并暴力去破解执行
        method.setAccessible(true);
        //3.获取RunClass对象,便于调用执行方法
        Object obj = cls.newInstance();

        Object invoke = method.invoke(obj);
    }
}
package com.homework_test.test04;

public class TestRunClass {
    public static void main(String[] args) throws Exception {
        RunClass.run();
    }
}
package com.homework_test.test04.Demo;

public class Study {

    public void dohomework(){
        System.out.println("正在苦逼的做作业!!");
    }
}
package com.homework_test.test04.Demo;

public class Teacher {

    public void teaching(){
        System.out.println("老师正在教课!!!");
    }
}

反射简易框架模拟

原文:https://www.cnblogs.com/liqiliang1437/p/13155691.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!