要求:写一个“框架”,不能改变该类的任何代码的前提下,可以帮我们创建任意类的对象,并执行其中的任意方法
首先准备好两个写好方法的类
一、准备好配置文件
这里先明确框架的执行步骤:
1.将需要创建的对象的全类名和需要执行的方法定义在配置文件中
2.在程序中加载读取配置文件
3.使用反射加载类文件进内存
4.创建对象
5.执行方法
二、第一步已经完成,进行第二步
首先创建properties对象
Properties pro = new Properties();
之后加载配置文件,首先要获取class目录下的配置文件
(1)创建一个classloder
ClassLoader classLoader = ReflectTest.class.getClassLoader();
(2)新建一个输入流并调用classloder的方法获得properties的数据流,并放入内存中
InputStream is = classLoader.getResourceAsStream("pro.properties");
pro.load(is);
三、使用配置文件的方法getproperty()来获取配置文件中的数据
String className = pro.getProperty("className");
String methodName = pro.getProperty("methodName");
四、新建一个类以将该类加载到内存(forName是将字节码文件加载到内存,返回到Class对象)
Class cls = Class.forName(className);
五、创建对象(使用空参数构造方法创建对象,可以使用Class对象的newInstance方法)
Object obj = cls.newInstance();
六、获取对象方法,新建一个对象以接收获取对象方法
Method method = cls.getMethod(methodName);
七、执行方法,使用方法的invoke(对象名)
method.invoke(obj);
执行不同对象的不同方法只需要修改配置文件即可,至此一个简单的框架就完成了