黑马程序员技术交流社区
标题:
java反射读取配置文件
[打印本页]
作者:
jiangshicun007
时间:
2015-12-2 14:56
标题:
java反射读取配置文件
package com.heima.reflect;
public class Demo2_Reflect {
/**
* * 榨汁机(Juicer)榨汁的案例
* 分别有水果(Fruit)苹果(Apple)香蕉(Banana)桔子(Orange)榨汁(squeeze)
* @throws IOException
*/
public static void main(String[] args) throws Exception {
Juicer j = new Juicer(); //创建榨汁机
BufferedReader br = new BufferedReader(new FileReader("config.properties"));
Class clazz = Class.forName(br.readLine()); //获取该类的字节码文件
Fruit f = (Fruit) clazz.newInstance(); //创建实例对象
j.run(f);
}
}
interface Fruit {
public void squeeze();
}
class Apple implements Fruit {
public void squeeze() {
System.out.println("榨出一杯苹果汁儿");
}
}
class Orange implements Fruit {
public void squeeze() {
System.out.println("榨出一杯橘子汁儿");
}
}
class Juicer {
public void run(Fruit f) {
f.squeeze();
}
}
这是老师讲分反射读取配置文件的例子
这个方法当我们把配置文件里的值输入为 com.heima.reflect.Apple时,输出榨出一杯苹果值,可是我如果想榨西瓜汁呢?梨子汁呢?想榨任意水果汁该怎能弄,而这个例子只能榨两种水果汁,所以觉得这个例子很鸡肋,求高手指点!
作者:
许鹏飞
时间:
2015-12-2 18:10
楼主,你可以在配置文件里配置西瓜汁梨子汁的包名.类名!根据需求使用西瓜或者梨子,也可以用for循环遍历出来
作者:
jiangshicun007
时间:
2015-12-2 20:36
许鹏飞 发表于 2015-12-2 18:10
楼主,你可以在配置文件里配置西瓜汁梨子汁的包名.类名!根据需求使用西瓜或者梨子,也可以用for循环遍历出来 ...
把代码搞出来,嘛!
作者:
队长别开枪是我
时间:
2015-12-2 23:38
不太明白 帮顶贴~
作者:
萧未然
时间:
2015-12-7 13:11
利用Properties集合的load方法加载配置文件的键值对进集合,然后迭代键的Set集合,取出值
作者:
ghb609840612
时间:
2016-1-3 16:29
我觉得这个例子已经用了多态这个特性了,我们要实现自己的功能,是需要自己写的,比如西瓜汁,梨子汁,用多态比不用多态可以省好多代码
作者:
ghb609840612
时间:
2016-1-3 16:36
class Watermelon implements Fruit {
public void squeeze() {
System.out.println("榨出一杯西瓜汁儿");
}
}
只需要在配置文件中将Apple换为 Watermelon即可
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2