027.3 反射技术 简单应用
程序员文章站
2022-04-24 19:51:25
###NoteBookMain.java package cn.itcast.reflect.test; import java.io.File; import java.io.FileReader; import java.util.Properties; public class NoteBoo... ......
###notebookmain.java package cn.itcast.reflect.test; import java.io.file; import java.io.filereader; import java.util.properties; public class notebookmain { /** * @param args * @throws exception */ public static void main(string[] args) throws exception { /* * 案例一: * 阶段一:笔记电脑运行。notebook run(); * 阶段二:想要使用一些外围设备,比如鼠标,键盘...... * 为了提高了笔记本的扩展性,应该降低这些设备和笔记本的耦合性。 * 需要接口。 * 只需要在设计之初,定义一个接口。而且笔记本在使用这个接口。 * * 后期有了usb的设备后,需要不断的new对象才可以用。每一次都要修改代码。 * * 能不能不修改这代码。就可以使用后期的设备呢? * 设备不明确的,而前期还要对其进行对象的建立。需要反射技术。 * 对外提供一个配置文件。 */ notebook book = new notebook(); book.run(); // book.useusb(null); // book.useusb(new mousebyusb()); //通过反射的方法重新设计应用程序,以提高更好的扩展性。 file configfile = new file("tempfile\\usb.properties"); if(!configfile.exists()){ configfile.createnewfile(); } //2,读取配置文件。 filereader fr = new filereader(configfile); //3,为了获取其中的键值信息方便,建立properties。 properties prop = new properties(); prop.load(fr); for(int x = 1; x<=prop.size()+1; x++){ string classname = prop.getproperty("usb"+x); //反射。 class clazz = class.forname(classname); usb usb = (usb)clazz.newinstance(); book.useusb(usb); } fr.close(); } }
###notebook.java public class notebook { /** * 运行 */ public void run(){ system.out.println("notebook run"); } /** * 使用usb的设备。 */ public void useusb(usb usb){//多态 if(usb!=null){ usb.open(); usb.close(); } } }
###usb.properties
//格式和下面差不多 usb1=reflect.keybyusb usb2=reflect.mousebyusb
###keybyusb.java public class keybyusb implements usb { @override public void open() { system.out.println("key open"); } @override public void close() { system.out.println("key close"); } }
###mousebyusb.java public class mousebyusb implements usb { @override public void open() { system.out.println("mouse open"); } @override public void close() { system.out.println("mouse close"); } }
###usb.java package cn.itcast.reflect.test; public interface usb { /** * 开启。 * */ void open(); /** * 关闭。 */ void close(); }
上一篇: 将Y-m-d转换为Y年m月d日
下一篇: 这年头喜欢你的是个正常人就烧高香吧