黑马程序员技术交流社区
标题:
这个题目想表达什么意思 run方法不是多线程的么
[打印本页]
作者:
杜正冬
时间:
2012-11-24 14:20
标题:
这个题目想表达什么意思 run方法不是多线程的么
已知一个类,定义如下:
package cn.itcast.heima;
public class DemoClass {
public void run()
{
System.out.println("welcome to heima!");
}
}
(1) 写一个Properties格式的配置文件,配置类的完整名称。
(2) 写一个程序,读取这个Properties配置文件,获得类的完整名称并加载这个类,用反射 的方式运行run方法。
作者:
赵红萍
时间:
2012-11-24 14:57
package cn.itcast.heima;
public class DemoClass {
public void run()
{
System.out.println("welcome to heima!");
}
}
这个类没有继承Thread类或实现Runable接口,所以里面的run方法只是一个普通的函数而已,这个题目要求你在项目中自己建一个properties格式的配置文件(用来存放键值对的),然后用反射的方法来运行这个run方法,反射可以用Class.forName()方法获得一个Method对象来实现这个功能
作者:
徐大鹏
时间:
2012-11-24 16:50
楼主{:soso_e179:}
作者:
徐大鹏
时间:
2012-11-24 16:52
public class bbb {
public static void main(String[] args) {
// 取出一个字符串中字母出现的次数。如:"abcdekka27qoq" a(2)b(1)k(2)...
stringTime("1345353535");
}
static void stringTime(String s) {
int[] count = new int[s.length()];
for (int x = 0; x < s.length(); x++) {//你的错误时数组越界了,x从0开始,可是不能和数组的长度一样,最大的那个下标应该是数组长度减1
for (int y = x; y < s.length(); y++) {
if (s.charAt(x) == s.charAt(y))
;
count[x]++;
}
System.out.println(s.charAt(x) + "" + count[x]);
}
}
}
复制代码
作者:
ljhheima
时间:
2012-11-24 20:22
这是该类的自定义函数,和线程没有关系。
作者:
yzqiong5566
时间:
2012-11-26 12:59
2个类一个属性文件:
package cn.itcast.heima;
public class DemoClass {
public void run() {
System.out.println("welcome to heima!");
}
}
复制代码
package cn.itcast.heima;
import java.io.IOException;
import java.util.Properties;
public class Test {
private static final String PROPERTIES_FILE_PATH = "classPath.properties";
private static final String PROPERTIES_KEY = "demoClass";
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
runSpecifiedMethodByReflection(getCompleteClassPath(), "run");//测试方法
}
private static String getCompleteClassPath() throws IOException {//加载资源文件,返回完整类名
Properties p = new Properties();
p.load(Test.class.getClassLoader().getResourceAsStream(PROPERTIES_FILE_PATH));
return p.getProperty(PROPERTIES_KEY);
}
private static void runSpecifiedMethodByReflection(String clasz,String methodName) throws Exception {
Object obj = Class.forName(clasz).newInstance();//跟据反射得到实例类
Class.forName(clasz).getDeclaredMethod(methodName, new Class[] {}).invoke(obj);//通过反射调用实例类指定的方法
}
}
复制代码
属性文件放在src目录下命名:classPath.properties
内容:
demoClass=cn.itcast.heima.DemoClass
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2