反射机制

Properties类是Hashtable类的子类,正如它的名字所暗示的,该对象在处理性文件时特别方便。properties类可以把Map对象和属性文件关联起来,从而可以把Map对象中的key-value对写入属性文件中,也可以吧属性文件中的“属性名=属性值”加到Map对象中。属性名和属性值都为字符串类型。所以,Properties里的key,value都是字符串类型。
String getProperty(String key);//获取Properties中指定的属性名对应的属性值。

在实现此反射机制的时候,需要
ReflecrDemo_4//相当于开机
Mainbord//相当于主板
SoudCard//相当于声卡
PCI//之间的连接工具
还需要一个配置文件。

这里写图片描述

具体实现:
这里写图片描述

PCI为一个接口,来实现加入的类,而主板是调用PCI
reflectDemo_4

public class reflectDemo5 {
//电脑运行
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        Mainbord mb = new Mainbord();
        mb.run();

        //每次添加一个类就要都需要修改代码传递一个新创建的对象
        //能不能不修改代码就可以完成这些操作
        //不用new来完成,而是只获取七class文件,在内部实现创建对象的动作。

        File configFile = new File("pci.properties");//配置文件
        Properties prop = new Properties(); //配置文件
        FileInputStream fis = new FileInputStream(configFile);//查询此配置文件

        prop.load(fis);//将属性文件加载key-value对,把加载到的key-value对追加到Properties里
        for(int x=0;x<prop.size();x++) {
            String pciName = prop.getProperty("pci"+(x+1));//获取Properties中指定属性名对应的属性值

            Class clazz = Class.forName(pciName);//用Class去加载PCI这个子类

            PCI p = (PCI)clazz.newInstance();//强制转换为PCI
            mb.usePCI(p);//主板调用这个PCI
        }
        fis.close();
    }

}

MainCard

public class Mainbord   {
    public void run() {
        System.out.println(" Mainbord run .......");//主板运行
    }
    public void usePCI(PCI p) {//PCI p = new SoudCard();
        if(p!=null) {
            p.open();
            p.close();
        }
    }
}

PCI

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

SoundCard

public class SoudCard implements PCI {
    public void open() {
        System.out.println("SoudCard open....");
    }
    public void close() {
        System.out.println("SoudCard close....");
    }
}

NetCard

public class NetCard implements PCI {

    @Override
    public void open() {
        System.out.println("NetCard open.....");
    }

    @Override
    public void close() {
        System.out.println("NetCard close.....");

    }

}

配置文件:当需要加入新的类的时候,在配置文件上要进行新的添加,则不需要改动主类,则只需要实现该PCI这个功能即可。

pci1=day26.SoudCard
pci2=day26.NetCard
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值