博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java反射机制使用场景
阅读量:6631 次
发布时间:2019-06-25

本文共 2242 字,大约阅读时间需要 7 分钟。

import java.io.*;import java.util.Properties;/*问题描述:存在一个主板--已经定义好,不想修改其代码,还想在主板上面增加一些其他功能? *问题解决方法:主板在定义的时候对外提供一个接口,让其他设备实现该接口,并把这些设备的 *信息写在配置文件里面。主板定义的时候读配置文件的信息,动态的获取其他设备的信息,并使用 *其他的功能。这样就完全不用修改主板的代码。极大的提高了程序的扩展性。 *所以通过反射就可以动态获取扩展类的对象,只需要修改具体配置文件的内容即可。 * *反射:动态的获取类的信息。其实是通过类名,加载类,获取类的Class对象,进而做其他的操作。 *        使用反射的最大的好处是程序的扩展性大大的提高。 *反射涉及的类:Class,java.lang.reflect包里面的Method,Field,Constructor支持 * */public class UseReflection {    public static void main(String[] args) throws IOException, ClassNotFoundException, Exception {        MainBoard mb = new MainBoard();        mb.run();                //把添加的设备写在配置文件中,并将该文件封装为对象        File f = new File("pci.properties");        //将配置文件关联到流        FileInputStream fis = new FileInputStream(f);        //创建Properties对象        Properties prop = new Properties();        //将流中的信息加载到prop里面        prop.load(fis);        //遍历从流中得到的信息        for(int i = 0; i < prop.size();i++){            String name = prop.getProperty("pci"+(i+1));            Class clazz = Class.forName(name);            PCI p = (PCI)clazz.newInstance();            mb.usePCI(p);        }            }}class MainBoard{    public void run(){        System.out.println("mainboard run-------");    }        public void usePCI(PCI p){        if(p != null){            p.open();            p.close();        }    }}

需要动态加载,反射类

public interface PCI {         public void open();    public void close();}  class SoundBoard implements PCI{              public SoundBoard() {             }     @Override    public void open() {        System.out.println("open sound");             }     @Override    public void close() {        System.out.println("close sound");    }} class WifiBoard implements PCI{         public WifiBoard() {         }     @Override    public void open() {        System.out.println("open wifi");             }     @Override    public void close() {        System.out.println("close wifi");             }}

    上面是一种模拟的反射机制的使用,真实使用反射机制的一个比较常见的例子是Tomcat--web服务器,Tomcat服务器的作用:就是处理浏览器的请求

和给予合适的应答,但是浏览器的请求类型通常不一样,为了提高服务器的扩展性,通常在Tomcat编写时就对外提供一个公共的接口--Servlet,要进行怎样

的响应和处理请求,需要开发人员需要做的就是直接实现该接口,定义合适的处理方式,并将具体实现类信息写在配置文件中,Tomcat在操作的时候根据读取

配置文件的内容,动态的获得合适的处理方式,处理浏览器的请求,开发者的编程难度也下降,直接面对的是接口和配置文件。想要修改具体的处理方式,直接

修改配置文件的内容即可。

转载地址:http://lawvo.baihongyu.com/

你可能感兴趣的文章
前端js正则的一个实例:过滤“rm -rf /”
查看>>
DOS窗口TELNET登陆终端批量执行命令
查看>>
Linux 线程实现机制分析
查看>>
转:Android世界的15款开源的游戏开发引擎
查看>>
多线程访问同一个可变变量,需增加同步机制
查看>>
apdplat 多表查询属性设置
查看>>
我的友情链接
查看>>
Android C/C++ 调试打印开关
查看>>
通过git把本地项目导入到码云的步骤
查看>>
Linux Basic 3:用户和组管理
查看>>
【斗医】【14】Web应用开发20天
查看>>
kibana: 异常流量调优过程
查看>>
我的友情链接
查看>>
nfs实现mysql数据库共享
查看>>
我的友情链接
查看>>
VS打开项目属性文件丢失问题
查看>>
我的友情链接
查看>>
在Flask App中使用计时器-timer
查看>>
总结:Tomcat调优之acceptCount
查看>>
(荷兰)彼得·冯·门施著:博物馆学研究的目的
查看>>