Java反射机制使用场景
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反射机制使用场景的更多相关文章
- Java反射机制概念及应用场景
Java的反射机制相信大家在平时的业务开发过程中应该很少使用到,但是在一些基础框架的搭建上应用非常广泛,今天简单的总结学习一下. 1. 什么是反射机制? Java反射机制是在运行状态中,对于任意一个类 ...
- Java基础学习总结(75)——Java反射机制及应用场景
什么是Java反射机制? JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的以及动态调用对象的方法的功能称为 ...
- 长篇图解java反射机制及其应用场景
一.什么是java反射? 在java的面向对象编程过程中,通常我们需要先知道一个Class类,然后new 类名()方式来获取该类的对象.也就是说我们需要在写代码的时候(编译期或者编译期之前)就知道我们 ...
- 11 java 反射机制
Java反射机制的适用场景及其利与弊: http://blog.csdn.net/zolalad/article/details/29370565 http://my.oschina.net/u/10 ...
- Java反射机制浅析
概念 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语 ...
- Java反射机制深度剖析
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! Java反射机制是Java语言中一种很重要的机制,可能在工作中用到的机会不多,但是在很多框架中都有用到这种机制.我们知道Java是一门静态 ...
- 【java提高】---java反射机制
java反射机制 一.概述 1.什么是反射机制 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态 ...
- Java反射机制与工厂模式
工厂模式属于创建型模式,它提供了一种创建对象的最佳方式. 它的特点是:客户端的程序类不直接牵扯到对象的实例化管理,只与接口发生关联,通过工厂类获取指定接口的实例化对象. 简单工厂模式如下: inter ...
- Java反射机制调用对象的方法 —— 将一个对象的属性值赋值给另一个对象的属性
模拟一个场景: 众所周知,EasyExcel导出Excel文档是依赖于注解完成的,在实体类需要导出的属性上面加上注解,导出的时候会自动识别该属性. 假如我们现在需要导出用户的信息,又不想污染原本的实体 ...
随机推荐
- 1001 数组中和等于K的数对 1002 数塔取数问题 1003 阶乘后面0的数量 1004 n^n的末位数字 1009 数字1的数量
1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K ...
- 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 ...
- jQuery中下拉select、复选checkbox、单选radio的操作代码
//select $("#Icon") //对象 $("#Icon").val() //取值 $("#Icon").val("fa ...
- SqlServer批量备份多个数据库且删除3天前的备份
/******************************************* * 批量备份数据库且删除3天前的备份 ************************************ ...
- This application failed to start because it could not find or load the Qt platform plugin "windows" 的问题原因以及解决方案
1. 问题原因非常简单,经过各种百度,都没有找到解决方案,在此做一个记录备用. 2.原因就在于,项目目录使用了中文路径,然后出现了这个问题. 3.我是在使用 syncfusion 下的HTML 转PD ...
- Philosophy is systematic reflective thinking on life.
1. perfect coding 逻辑思维.抽象思维.发散思维 knowledge application design 2. Java Object: h ...
- OpenCV 学习笔记(模板匹配)
OpenCV 学习笔记(模板匹配) 模板匹配是在一幅图像中寻找一个特定目标的方法之一.这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否"相似",当相似度足够 ...
- Scrapy架构及其组件之间的交互
最近在学Python,同时也在学如何使用python抓取数据,于是就被我发现了这个非常受欢迎的Python抓取框架Scrapy,下面一起学习下Scrapy的架构,便于更好的使用这个工具. 一.概述 下 ...
- 谈谈我对php通信的理解及人生小感
故事背景: 小王和小甜是亲密无间的好朋友. 小王到自己QQ群里看到一个免单活动, 自己支付宝余额不足, 遂用小甜的手机淘宝先花150元购买了活动产品. 到货后商家告诉小王, 确认收货后提供旺旺账号.支 ...
- json生成方式
<script type="text/javascript"> //初始化需要json化的参数 var data = { No: No, Type: Type }; / ...