/**
* 8、 已知一个类,定义如下:
package cn.itcast.heima;
public class DemoClass {
public void run()
{
System.out.println("welcome to heima!");
}
}
(1) 写一个Properties格式的配置文件,配置类的完整名称。
(2) 写一个程序,读取这个Properties配置文件,获得类的完整名称并加载这个类,用反射 的方式运行run方法。
* */
public class Test8 {
/**
* @param args
*/
public static void main(String[] args)throws Exception
{
setProperties();//定义一个方法将已知类存进Properties格式的文件中
getProperties();//用反射运行run方法
}
public static void setProperties()throws IOException
{
File file = new File("D:","class.Properties");
BufferedWriter bfw = new BufferedWriter(new FileWriter(file));
Properties p = new Properties();
p.setProperty("ClassName", "cn.itcast.heima.DemoClass");//将类名和方法名存入集合中
p.setProperty("MethodName", "run");
p.store(bfw,null);//通过流写入文件中
bfw.close();
}
public static void getProperties()throws Exception//因为反射方法需要抛出异常,所以此处不用IO异常
{
File file = new File("D:","class.Properties");
BufferedReader bfr = new BufferedReader(new FileReader(file));
Properties p =new Properties();
p.load(bfr);// 将文件加载到集合中
String s =p.getProperty("ClassName");
String str=p.getProperty("MethodName");
Class<?> clazz =Class.forName(s);
DemoClass per = (DemoClass)clazz.newInstance();//通过反射获取类对象
Method m = clazz.getMethod(str);//调用方法
m.invoke(per);
}
}