/*
框架类
需求:不改变代码的前提下,创建任意类的对象并执行其中的任意方法
实现:
1、配置文件
2、反射
步骤:
1、将需要创建的对象的全类名和需要执行的方法定义在配置文件中
2、在程序中加载读取配置文件
3、使用反射技术来加载类文件进内存
4、创建对象
5、执行方法
*/
public class ReflectTest {
public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
//可以创建任意类的对象,可以执行任意方法
/*
前提:不能改变该类的任何代码,可以创建任意类的对象,可以执行任意方法
*/
//1、加载配置文件 创建Properties对象
Properties pro = new Properties();
//获取文件路径
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 o = cls.getDeclaredConstructor().newInstance();
//5、获取方法对象
Method method = cls.getMethod(methodName);
//6、执行方法
method.invoke(o);
}
}
className=domain.Student
methodName=sleep