本文例题同样出自B站UP主黎曼的猜想Java基础+进阶教程P466节
需求:写一个框架,不能改变该类的任何代码,帮助我们创建任意类的对象,并且执行其中任意方法
实现:
1、配置文件
2、反射、
步骤:
1、将需求创建的对象的全类名和需要执行的方法定义在配置文件中
2、在程序中家在读取配置文件
3、使用反射技术来家在类文件进内存
4、创建对象
5、执行方法
Person类
package com.company;
public class Person {
public void eat(){
System.out.println("eat...");
}
}
pro.properties文件:
className=com.company.Person
methodName=eat
main函数:
package com.company;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;
public class Main {
public static void main(String[] args) throws Exception{
// write your code here
// System.out.println("123abc");
/*
需求:写一个框架,不能改变该类的任何代码,帮助我们创建任意类的对象,并且执行其中任意方法
实现:
1、配置文件
2、反射、
步骤:
1、将需求创建的对象的全类名和需要执行的方法定义在配置文件中
2、在程序中家在读取配置文件
3、使用反射技术来家在类文件进内存
4、创建对象
5、执行方法
* */
// 1、加载配置文件
// 1.1 创建Properties对象
Properties pro = new Properties();
// 1.2 加载配置文件,转换为一个集合
ClassLoader cl = Main.class.getClassLoader();
InputStream is = cl.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);
}
}
执行结果: