A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//强迫症出现在反射阶段 ,其他都搞定了 就一个地方搞定不了,抓狂了。。。!

------------------------------------上代码
package Demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Properties;
import java.util.Set;

/**
* 8、 已知一个类,定义如下:
   package cn.itcast.heima;
      public class DemoClass {
      public void run()
      {
         System.out.println("welcome to heima!");
      }   
     }
     (1) 写一个Properties格式的配置文件,配置类的完整名称。
(2) 写一个程序,读取这个Properties配置文件,获得类的完整名称并加载这个类,用反射 的方式运行run方法。
* @author Administrator
*
*/
public class DayFirst08 {

        public static void main(String[] args) {
               
                config("className1=Demo.DemoClass");
                relectMethod("run");
        }
        //创建Properties格式的配置文件并配置类的完整名称
        public static void config(String className)
        {
                //创建Properties格式的配置文件
                File f=new File("Properties");
                if(!(f.exists()))
                {
                        try {
                                f.createNewFile();
                        } catch (IOException e) {
                                throw new RuntimeException("创建配置文件失败");
                        }
                }
                //配置类的完整名称
                FileWriter xie=null;
                try {
                        xie=new FileWriter(f);
                        xie.write(className);
                       
                } catch (IOException e) {
                        throw new RuntimeException("写入失败");
                }
                finally
                {
                        try {
                                xie.close();
                        } catch (IOException e) {
                                throw new RuntimeException("关闭失败");
                        }
                }
       
        }
        public static void relectMethod(String methodName)
        {
                Properties pro=new Properties();
                try {
                        FileInputStream f=new FileInputStream(new File("Properties"));
                        try {
                                pro.load(f);
                                Set<String> key=pro.stringPropertyNames();
                                for(String name:key)
                                {
                                        String className=pro.getProperty(name);
                                        relectMe(className,methodName);
                                }
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                } catch (FileNotFoundException e) {
                        e.printStackTrace();
                }
               
               
        }
       
        private static void relectMe(String className,String methodName)
        {
                try {
                        Method m=Class.forName(className).getMethod(methodName, null);//黄色标记在此,求方法去除
                        m.invoke(Class.forName(className).newInstance(), new Object[0]);
                } catch (Exception e) {
                        e.printStackTrace();
       
                        }

        }
}




8 个回复

倒序浏览
哎,我的Eclipse软件到现在电脑里还运行不了呢???
回复 使用道具 举报
你没配置好吧
回复 使用道具 举报
黄色只是不规范,不影响运行的
回复 使用道具 举报
黄色一般是警示的,不影响程序的正常运行。
回复 使用道具 举报
longshaocn 来自手机 中级黑马 2014-9-18 20:20:11
地板
习惯就好,强迫症,应该换个强迫症头像天天看,就好了!
回复 使用道具 举报
我也有点强迫症。
回复 使用道具 举报
rehan 中级黑马 2015-2-23 11:12:28
8#
乱七八糟。。。。代码可读性非常差
回复 使用道具 举报
一定要要把问题弄好是好习惯啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马