黑马程序员技术交流社区
标题:
反射问题
[打印本页]
作者:
黑马-文鸿利
时间:
2013-9-6 21:43
标题:
反射问题
本帖最后由 杨增坤 于 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
求指教! 我弄了半天也没弄出来
作者:
极限冰风
时间:
2013-9-6 22:12
写一个配置文件的内容: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
作者:
罗凯健
时间:
2013-9-6 23:05
学习了,2楼说的够详细的
作者:
Jayshun
时间:
2014-5-16 20:22
罗凯健 发表于 2013-9-6 23:05
学习了,2楼说的够详细的
谢谢!看了我先写哈程序看
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2