关于java反射机制
来源:互联网 发布:nginx server log配置 编辑:程序博客网 时间:2024/05/21 14:01
参考自http://www.cnblogs.com/lzq198754/p/5780331.html
http://www.cnblogs.com/yaozhongxiao/archive/2013/05/21/3091353.html
概念:简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,
那么就可以通过反射机制来获得类的所有信息。
反射的优缺点:为什么要用反射机制?直接创建对象不就可以了吗,这就涉及到了动态与静态的概念,
静态编译:在编译时确定类型,绑定对象,即通过。
动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多
态的应用,有以降低类之间的藕合性。
一句话,反射机制的优点就是可以实现动态创建对象和编译,体现出很大的灵活性,特别是在J2EE的开发中
它的灵活性就表现的十分明显。比如,一个大型的软件,不可能一次就把把它设计的很完美,当这个程序编
译后,发布了,当发现需要更新某些功能时,我们不可能要用户把以前的卸载,再重新安装新的版本,假如
这样的话,这个软件肯定是没有多少人用的。采用静态的话,需要把整个程序重新编译一次才可以实现功能
的更新,而采用反射机制的话,它就可以不用卸载,只需要在运行时才动态的创建和编译,就可以实现该功
能。 目前一些主流框架其实就是由反射机制编写的。
它的缺点是对性能有影响。使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么并且它
满足我们的要求。这类操作总是慢于只直接执行相同的操作。
反射机制主要提供了以下功能:
在运行时判断任意一个对象所属的类;
在运行时构造任意一个类的对象;
在运行时判断任意一个类所具有的成员变量和方法;
在运行时调用任意一个对象的方法;
生成动态代理。
反射机制应用场景:
1).Java的反射机制在做基础框架的时候非常有用,有一句话这么说来着:反射机制是很多Java框架的基石。
而一般应用层面很少用,不过这种东西,现在很多开源框架基本都已经给你封装好了,自己基本用不着写。
典型的除了Hibernate之外,还有Spring也用到很多反射机制。经典的就是在xml文件或者properties里面写好了配
置,然后在Java类里面解析xml或properties里面的内容,得到一个字符串,然后用反射机制,根据这个字符串获
得某个类的Class实例,这样就可以动态配置一些东西,不用每一次都要在代码里面去new或者做其他的事情,以
后要改的话直接改配置文件,代码维护起来就很方便了,同时有时候要适应某些需求,Java类里面不一定能直接调
用另外的方法,这时候也可以通过反射机制来实现。
2)当你做一个软件可以安装插件的功能,你连插件的类型名称都不知道,你怎么实例化这个对象呢?因为程序是
支持插件的(第三方的),在开发的时候并不知道 。所以无法在代码中 New出来 ,但反射可以,通过反射,动态
加载程序集,然后读出类,检查标记之后再实例化对象,就可以获得正确的类实例。
3)在编码阶段不知道那个类名,要在运行期从配置文件读取类名, 这时候就没有办法硬编码new ClassName(),而必
须用到反射才能创建这个对象.反射的目的就是为了扩展未知的应用。比如你写了一个程序,这个程序定义了一些
接口,只要实现了这些接口的dll都可以作为插件来插入到这个程序中。那么怎么实现呢?就可以通过反射来实现。
就是把dll加载进内存,然后通过反射的方式来调用dll中的方法。很多工厂模式就是使用的反射。
- 关于Java反射机制
- 关于java反射机制
- 关于java反射机制
- 关于java反射机制
- 关于java反射机制
- 关于Java反射机制
- 关于Java的反射机制
- 关于Java的反射机制
- 关于java反射机制的粗略理解
- 关于Java反射机制的一个实例
- 关于java反射机制的理解
- 关于java基础--反射机制的详解
- 黑马程序员—关于java反射机制
- 关于java中的反射机制理解!
- 关于java反射机制的学习
- 关于Java反射机制的总结
- java的反射机制--关于类中属性的反射。
- 【反射】JAVA反射机制
- 米洛个人修炼术:做到这六点倍增你的工作效率准时下班
- 利用nodejs建立一个简单的聊天服务器
- 解决MTK 功能机 nvram 使用多个默认值 失败
- 我的2016年总结,我的第一篇博客
- Apple Tree-----树状数组
- 关于java反射机制
- SQL Injection绕过技巧
- linux系统安装redis
- 一个简单的HTML表单及JavaScript验证
- ubuntu安装samba服务
- Java 编程中关于异常处理的 10 个最佳实践
- mongodb学习笔记
- jQuery学习笔记(五) jQuery UI按钮,进度条以及滑动条
- Hrbust 1389 JiaozhuV5 Substrings【思维+大模拟+细心+细心】窝为什么要做这种题T T