反射案例:不改变该类的任何代码,可以创建任意类对象且执行任意方法

2022-07-31,,,,

需求:写一个“框架”,不能改变该类的任何代码的前提下,可以帮我们创建任意类的对象,并且执行其中任意的方法

实现

步骤:

  • 1.将需要创建的对象的全类名和需要执行的方法定义在配置文件中
  • 2.在程序中加载读取配置文件
  • 3.使用反射技术来加载类文件进内存
  • 4.创建对象
  • 5.执行方法

配置文件

package cn.reflect; import cn.domain.Person; import cn.domain.Student; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; import java.util.Properties; /**
 * 框架类
 */ public class ReflectTest { public static void main(String[] args) throws Exception { //可以创建任意类的对象,可以执行任意方法 /**
         前提:不能改变该类的任何代码。可以创建任意类的对象,可以执行任意方法
         */ /* Person p = new Person();
        p.eat();
        Student stu = new Student();
        stu.sleep();*/ //1.加载配置文件 //1.1 创建Properties对象 Properties pro = new Properties(); //1.2 加载配置文件,转换为一个集合 //1.2.1 获取class目录下的配置文件 ClassLoader classLoader = ReflectTest.class.getClassLoader(); InputStream is = classLoader.getResourceAsStream("pro.properties"); pro.load(is); //2.获取配置文件中定义的数据 String className = pro.getProperty("className"); String methodName = pro.getProperty("methodName"); //3.加载该类进内存 Class cls = Class.forName(className); //4.创建对象 Object obj = cls.newInstance(); //5.获取方法对象 Method method = cls.getMethod(methodName); //6.执行方法 method.invoke(obj); } } 

本文地址:https://blog.csdn.net/weiyoo55/article/details/107890753

《反射案例:不改变该类的任何代码,可以创建任意类对象且执行任意方法.doc》

下载本文的Word格式文档,以方便收藏与打印。