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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

已知一个类,定义如下:

           package cn.itcast.heima;
              public class DemoClass {
              public void run()
              {
                 System.out.println("welcome to heima!");
              }   
             }
        (1) 写一个Properties格式的配置文件,配置类的完整名称。
        (2) 写一个程序,读取这个Properties配置文件,获得类的完整名称并加载这个类,用反射 的方式运行run方法。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
package cn.itcast.heima;
               public class DemoClass {
               public void run()
               {
                  System.out.println("welcome to heima!");
               }   
              }
这个类没有继承Thread类或实现Runable接口,所以里面的run方法只是一个普通的函数而已,这个题目要求你在项目中自己建一个properties格式的配置文件(用来存放键值对的),然后用反射的方法来运行这个run方法,反射可以用Class.forName()方法获得一个Method对象来实现这个功能

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
楼主{:soso_e179:}
回复 使用道具 举报
  1. public class bbb {
  2. public static void main(String[] args) {
  3.    // 取出一个字符串中字母出现的次数。如:"abcdekka27qoq" a(2)b(1)k(2)...
  4.    stringTime("1345353535");
  5. }
  6. static void stringTime(String s) {
  7.    int[] count = new int[s.length()];
  8.    for (int x = 0; x < s.length(); x++) {//你的错误时数组越界了,x从0开始,可是不能和数组的长度一样,最大的那个下标应该是数组长度减1
  9.     for (int y = x; y < s.length(); y++) {
  10.      if (s.charAt(x) == s.charAt(y))
  11.       ;
  12.      count[x]++;
  13.     }
  14.     System.out.println(s.charAt(x) + "" + count[x]);
  15.    }
  16. }
  17. }

复制代码

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
这是该类的自定义函数,和线程没有关系。
回复 使用道具 举报
2个类一个属性文件:
  1. package cn.itcast.heima;

  2. public class DemoClass {
  3.         public void run() {
  4.                 System.out.println("welcome to heima!");
  5.         }
  6. }
复制代码
  1. package cn.itcast.heima;
  2. import java.io.IOException;
  3. import java.util.Properties;

  4. public class Test {
  5.        
  6.         private static final String PROPERTIES_FILE_PATH = "classPath.properties";
  7.         private static final String PROPERTIES_KEY = "demoClass";
  8.         /**
  9.          * @param args
  10.          * @throws Exception
  11.          */
  12.         public static void main(String[] args) throws Exception {

  13.                 runSpecifiedMethodByReflection(getCompleteClassPath(), "run");//测试方法
  14.         }

  15.         private static String getCompleteClassPath() throws IOException {//加载资源文件,返回完整类名
  16.                 Properties p = new Properties();
  17.                 p.load(Test.class.getClassLoader().getResourceAsStream(PROPERTIES_FILE_PATH));
  18.                 return p.getProperty(PROPERTIES_KEY);
  19.         }

  20.         private static void runSpecifiedMethodByReflection(String clasz,String methodName) throws Exception {
  21.                 Object obj = Class.forName(clasz).newInstance();//跟据反射得到实例类
  22.                 Class.forName(clasz).getDeclaredMethod(methodName, new Class[] {}).invoke(obj);//通过反射调用实例类指定的方法
  23.         }
  24. }
复制代码
属性文件放在src目录下命名:classPath.properties
内容:
  1. demoClass=cn.itcast.heima.DemoClass
复制代码

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马