javase--反射
//书写规则
1 package cn.reflex; 2 3 public interface PCI { 4 5 public void open(); 6 public void close(); 7 }
//调用方法
package cn. reflex ; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.util.Properties; 6 7 public class Reflecttext { 8 9 public static void main(String[] args) throws Exception { 10 // TODO Auto-generated method stub 11 12 Mainboard mb = new Mainboard(); 13 mb.run(); 14 15 File configFile = new File("PCI.properties");// 读取配置文件 16 Properties prop = new Properties();// 用来获取键值对的集合 17 FileInputStream fi = new FileInputStream(configFile);// 创建流将配置文件读取进来 18 prop.load(fi);// 将流加载进集合中 19 20 // 循环读取流中配置文件数据 21 for (int x = 0; x<=prop.size(); x++) { 22 23 String pciName = prop.getProperty("pci" +x); 24 if (pciName!=null) { 25 Class<?> clazz = Class.forName(pciName);//用Class去加载pci子类对象 26 27 PCI pci = (PCI)clazz.newInstance();//新的对象实例化 28 29 mb.usePCI(pci); 30 } 31 } 32 fi.close(); 33 } 34 }
1 //运行主板
package cn.reflex; 2 3 public class Mainboard { 4 5 public void run() { 6 System.out.println("主板运行"); 7 } 8 9 public void usePCI(PCI p) { 10 11 if (p != null) { 12 p.open(); 13 p.close(); 14 } 15 16 } 17 //插入声卡
1 package cn.reflex; 2 3 public class Netcard implements PCI { 4 5 @Override 6 public void open() { 7 System.out.println("网卡打开"); 8 } 9 @Override 10 public void close() { 11 System.out.println("网卡关闭"); 12 } 13 14 }