当前位置: 移动技术网 > IT编程>开发语言>Java > 反射案例:不改变该类的任何代码,可以创建任意类对象且执行任意方法

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

2020年08月10日  | 移动技术网IT编程  | 我要评论
案例:​需求:写一个“框架”,不能改变该类的任何代码的前提下,可以帮我们创建任意类的对象,并且执行其中任意的方法实现:1.配置文件2.反射步骤:1.将需要创建的对象的全类名和需要执行的方法定义在配置文件中2.在程序中加载读取配置文件3.使用反射技术来加载类文件进内存​4.创建对象​5.执行方法配置文件package cn.reflect;import cn.domain.Person;import cn.domain.Student;import java

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

实现

  • 1.配置文件

  • 2.反射

步骤:

  • 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

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网