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在操作的时候根据读取

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

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

Java反射机制使用场景的更多相关文章

  1. Java反射机制概念及应用场景

    Java的反射机制相信大家在平时的业务开发过程中应该很少使用到,但是在一些基础框架的搭建上应用非常广泛,今天简单的总结学习一下. 1. 什么是反射机制? Java反射机制是在运行状态中,对于任意一个类 ...

  2. Java基础学习总结(75)——Java反射机制及应用场景

    什么是Java反射机制? JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的以及动态调用对象的方法的功能称为 ...

  3. 长篇图解java反射机制及其应用场景

    一.什么是java反射? 在java的面向对象编程过程中,通常我们需要先知道一个Class类,然后new 类名()方式来获取该类的对象.也就是说我们需要在写代码的时候(编译期或者编译期之前)就知道我们 ...

  4. 11 java 反射机制

    Java反射机制的适用场景及其利与弊: http://blog.csdn.net/zolalad/article/details/29370565 http://my.oschina.net/u/10 ...

  5. Java反射机制浅析

    概念 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语 ...

  6. Java反射机制深度剖析

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! Java反射机制是Java语言中一种很重要的机制,可能在工作中用到的机会不多,但是在很多框架中都有用到这种机制.我们知道Java是一门静态 ...

  7. 【java提高】---java反射机制

    java反射机制 一.概述 1.什么是反射机制 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态 ...

  8. Java反射机制与工厂模式

    工厂模式属于创建型模式,它提供了一种创建对象的最佳方式. 它的特点是:客户端的程序类不直接牵扯到对象的实例化管理,只与接口发生关联,通过工厂类获取指定接口的实例化对象. 简单工厂模式如下: inter ...

  9. Java反射机制调用对象的方法 —— 将一个对象的属性值赋值给另一个对象的属性

    模拟一个场景: 众所周知,EasyExcel导出Excel文档是依赖于注解完成的,在实体类需要导出的属性上面加上注解,导出的时候会自动识别该属性. 假如我们现在需要导出用户的信息,又不想污染原本的实体 ...

随机推荐

  1. 1001 数组中和等于K的数对 1002 数塔取数问题 1003 阶乘后面0的数量 1004 n^n的末位数字 1009 数字1的数量

    1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K ...

  2. http://codeforces.com/problemset/problem/594/A

    A. Warrior and Archer time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  3. jQuery中下拉select、复选checkbox、单选radio的操作代码

    //select $("#Icon") //对象 $("#Icon").val() //取值 $("#Icon").val("fa ...

  4. SqlServer批量备份多个数据库且删除3天前的备份

    /******************************************* * 批量备份数据库且删除3天前的备份 ************************************ ...

  5. This application failed to start because it could not find or load the Qt platform plugin "windows" 的问题原因以及解决方案

    1. 问题原因非常简单,经过各种百度,都没有找到解决方案,在此做一个记录备用. 2.原因就在于,项目目录使用了中文路径,然后出现了这个问题. 3.我是在使用 syncfusion 下的HTML 转PD ...

  6. Philosophy is systematic reflective thinking on life.

    1. perfect  coding 逻辑思维.抽象思维.发散思维 knowledge application                     design 2. Java Object: h ...

  7. OpenCV 学习笔记(模板匹配)

    OpenCV 学习笔记(模板匹配) 模板匹配是在一幅图像中寻找一个特定目标的方法之一.这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否"相似",当相似度足够 ...

  8. Scrapy架构及其组件之间的交互

    最近在学Python,同时也在学如何使用python抓取数据,于是就被我发现了这个非常受欢迎的Python抓取框架Scrapy,下面一起学习下Scrapy的架构,便于更好的使用这个工具. 一.概述 下 ...

  9. 谈谈我对php通信的理解及人生小感

    故事背景: 小王和小甜是亲密无间的好朋友. 小王到自己QQ群里看到一个免单活动, 自己支付宝余额不足, 遂用小甜的手机淘宝先花150元购买了活动产品. 到货后商家告诉小王, 确认收货后提供旺旺账号.支 ...

  10. json生成方式

    <script type="text/javascript"> //初始化需要json化的参数 var data = { No: No, Type: Type }; / ...