package com.itheima;
import java.io.FileInputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Properties;
public class Test5
{
/**
* 5、 已知一个类,定义如下:
* package cn.itcast.heima;
* public class DemoClass {
* public void run()
* {
* System.out.println("welcome to heima!");
* }
* }
* (1) 写一个Properties格式的配置文件,配置类的完整名称。
* (2) 写一个程序,读取这个Properties配置文件,获得类的完整名称并加载这个类,用反射的方式运行run方法。
*
* @throws Exception
*/
public static void main(String[] args) throws Exception
{
// 创建Properties集合对象
Properties p = new Properties();
// 创建文件输入流对象
FileInputStream fis = new FileInputStream("src/com/itheima/a.Properties");
p.load(fis);
fis.close();
// 获取键值
String property = p.getProperty("className");
System.out.println(property);
// 获取 字节码文件对象
Class<?> Class1 = Class.forName(property);
// 调用Class类的构造方法
Constructor<?> c = Class1.getConstructor();
// 获取DemoClass对象
Object n = c.newInstance();
String property2 = p.getProperty("methodName");
Method d = Class1.getDeclaredMethod(property2);
// 反射获取到方法
d.invoke(n);
}
}
|
|