当前位置: 移动技术网 > IT编程>开发语言>Java > 027.3 反射技术 简单应用

027.3 反射技术 简单应用

2018年10月25日  | 移动技术网IT编程  | 我要评论
###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();
}

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网