黑马程序员技术交流社区

标题: 还差几分,版主真帅,多给点分吧,不能再错过这个班了 [打印本页]

作者: lknum1    时间: 2015-9-10 23:11
标题: 还差几分,版主真帅,多给点分吧,不能再错过这个班了
一道用运用到反射的题目,大家看看还有没有更简单的方法
package com.itheima;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Properties;
import cn.itcast.heima.DemoClass;

/**
* 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);
    }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2