Java反射的简单例子

来源:互联网 发布:抑毛液有用吗 知乎 编辑:程序博客网 时间:2024/06/12 21:01

 反射技术: 通过配置文件动态获取类,仅在配置文件中添加类名,而不用修改源码


当程序写好后直接在配置文件里添加新增类名就可以了

public class ReflectTest {public static void main(String[] args) throws Exception {NoteBook nb = new NoteBook();nb.run();// nb.useUSB(new UsbMouse()); // 传统方法// nb.useUSB(new UsbKey());// 1 新建配置文件File config = new File("file\\usb.properties");if (!config.exists())config.createNewFile();// 2 读取配置文件FileReader fr = new FileReader(config);// 获取键值Properties pr = new Properties(); // 属性文件 文件中存储键-值对key=valuepr.load(fr);for (int i = 1; i <= pr.size(); i++) {String name = pr.getProperty("usb" + i);// 反射技术Class c = Class.forName(name);  //获取类名USB usb = (USB) c.newInstance();  //创建实例nb.useUSB(usb);// 加载配置文件中的类 传对象给Notebook}fr.close();}}
</pre><pre name="code" class="java">public class NoteBook {public void run() {System.out.println("笔记本电脑开启");}public void useUSB(USB usb) { // 多态if (usb != null) {usb.open();usb.close();}}}

public interface USB {void open();void close();}


public class UsbKey implements USB {public void open() {System.out.println("usb键盘开启");}public void close() {System.out.println("usb键盘关闭");}}

public class UsbMouse implements USB {public void open() {System.out.println("usb鼠标开启");}public void close() {System.out.println("usb鼠标关闭");}}


0 0