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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-文鸿利 中级黑马   /  2013-9-6 21:43  /  1283 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨增坤 于 2013-9-11 17:53 编辑

已知一个类,定义如下:
   package cn.itcast.heima;
      public class DemoClass {
      public void run()
      {
         System.out.println("welcome to heima!");
      }   
     }
(1) 写一个Properties格式的配置文件,配置类的完整名称。
(2) 写一个程序,读取这个Properties配置文件,获得类的完整名称并加载这个类,用反射 的方式运行run
求指教! 我弄了半天也没弄出来

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

3 个回复

倒序浏览
  • 写一个配置文件的内容:className=cn.itcast.heima.DemoClass ;
  • //通过类加载器在加载java的class文件的同时将配置文件也加载进去(getResourceAsStream)---->类加载器
  • InputStream ips=ReflectHasSet.class.getResourceAsStream("ReflectFile.properties");
  • //当配置文件在一个包中的时候使用下面这种方式
  • //InputStream ips=ReflectHasSet.class.getResourceAsStream("/ReflectFile/ReflectFile.properties");
  • //Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。
  • Properties porperties=new Properties();
  • //使用Properties类的load(InputStream inStream)方法  从输入流中读取属性列表(键和元素对)。
  • porperties.load(ips);
  • ips.close();//关闭流
  • //通过key获取配置文件中的类名
  • String className=porperties.getProperty("className");
  • //通过反射获来获取对象
  • DemoClass dc=(DemoClass)Class.forName(className).newInstance();
  • dc.run();

  • 以上代码自己并没有运行;但我写的注释你可以很清楚了看出来是什么意思;你只要写个配置文件就可以了,应该不会有问题的直接放到main方法中运行就可以了;要抛异常:throws IOException, InstantiationException, IllegalAccessException



评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

回复 使用道具 举报
学习了,2楼说的够详细的
回复 使用道具 举报
罗凯健 发表于 2013-9-6 23:05
学习了,2楼说的够详细的

谢谢!看了我先写哈程序看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马