Java 反射的应用练习

来源:互联网 发布:苹果4s有4g网络吗 编辑:程序博客网 时间:2024/06/08 18:52
package p2.reflect.test;import java.awt.event.MouseWheelEvent;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Properties;public class ReflectTest {public static void main(String[] args) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException {MainBoard mb=new MainBoard();mb.run();//每次添加一个设备都需要修改代码传递一个新创键的对象 //mb.usePCI(new SoundCard());//能不能不修改代码就能完成这个动作//不用new来完成 而是直接获取器class文件 在内部实现创建对象的动作File configFile=new File("pci.properties");Properties prop=new Properties();FileInputStream fis=new FileInputStream(configFile);prop.load(fis);for(int x=0;x<prop.size();x++) {String pciName=prop.getProperty("pci"+(x+1));Class clazz=Class.forName(pciName); //用class去加载这个pci子类PCI p= (PCI)clazz.newInstance();mb.usePCI(p);}fis.close();}}


package p2.reflect.test;/* * 电脑运行 */public class MainBoard {public void run() {System.out.println("mainboard run");}public void usePCI(PCI p) {if(p!=null) {p.open();p.close();}}}



package p2.reflect.test;public class SoundCard implements PCI {public void open() {System.out.println("sound open");}public void close() {System.out.println("sound close");}}


package p2.reflect.test;public interface PCI {public void open();public void close();}


配置文件中:pci1=p2.reflect.test.SoundCard  通过修改该配置文件内容 就可以不修改代码实现动态修改程序 (使主板 接入不同实现pci接口的的设备)

原创粉丝点击