黑马程序员技术交流社区

标题: 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