反射的目的

Java的反射机制是在程序运行时,能够完全知道任何一个类,及其它的属性和方法,并且能够任意调用一个对象的属性和方法。这种运行时的动态获取就是Java的反射机制。其实这也是Java是动态语言的一个象征。

用一句话来概括反射就是:加载一个运行时才知道的类以及它的完整内部结构。

-----------------------------------------------------------------
我们为什么要用Java的反射机制呢?
我认为有两种:
第一种:反射的目的就是为了扩展未知的应用。比如你写了一个程序,这个程序定义了一些接口,只要实现了这些接口的dll都可以作为插件来插入到这个程序中。那么怎么实现呢?就可以通过反射来实现。就是把dll加载进内存,然后通过反射的方式来调用dll中的方法。

第二种:在编码阶段不知道那个类名,要在运行期从配置文件读取类名, 这时候就没有办法硬编码new ClassName(),而必须用到反射才能创建这个对象。

-----------------------------------------------------------------

1) Member成员是一种接口,反映有关单个成员(字段或方法)或构造方法的标识信息
2) InvocationHandler是代理实例的调用处理程序 实现的接口(这个接口的具体用法等到java反射机制剖析4着重介绍)
3) Method提供一个类的方法的信息以及访问类的方法的接口。

-----------------------------------------------------------------

提供这样一个手段,通过传入任一对象 将对象内部的数据提取出来,并控制作,可修改对象内的数据

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

参考:http://blog.csdn.net/lfsf802/article/details/7239652

时间: 2024-08-04 17:17:47

反射的目的的相关文章

第五节:使用反射发现类型成员

到目前为止,本章的重点一直放在发射机制中用于构建动态可扩展应用程序所需的那些方面,包括程序集加载.类型发现以及对象构造.为了获得较好的性能和编译时的类型安全性,应尽量避免使用发射.在动态可扩展应用程序的情况下,构造好一个对象之后,宿主代码一般要将对象转型为编译时已知的一个接口或者基类.这样一来,访问对象的成员时,就可以获得较高的性能,而且可以确保编译时的类型安全性. 在本章剩余的部分,我们将从其他角度讨论反射,目的是发现并调用类型的成员,这种发现并调用类型成员的能力一般用于开发工具和实用程序,他

java反射经典总结

1:通过反射解析这个类的构造函数 public class person { public String name="jack"; private int password=123; private static int age; public person() { System.out.println("person"); } public person(String name) { System.out.println("person name:&qu

为什么需要反射?

1)当你做一个软件可以安装插件的功能,你连插件的类型名称都不知道,你怎么实例化这个对象呢?因为程序是支持插件的(第三方的),在开发的时候并不知道 .所以,无法在代码中 New出来 ,但反射可以, 通过反射, 动态加载程序集, 然后读出类, 检查标记 (特性 attributable)之后再实例化对象.就可以获得正确的类实例.反射的目的就是为了扩展未知的应用.比如你写了一个程序,这个程序定义了一些接口,只要实现了这些接口的dll都可以作为插件来插入到这个程序中.那么怎么实现呢?就可以通过反射来实现

Spring IoC的原理为什么是反射而不是new

因为Spring在加载类的实例时,我们知道其实是用工厂的方式,给出一个个实例,而在工厂里面,用了单例,但是真正实例化,则是反射的newInstance来创建对象,而不是new. 那么,为什么是反射的newInstance,而不是new呢? 那么首先我们必须明白,Java里面,反射的目的是什么? 高内聚,低耦合. 进一步,反射比new的好处是什么? 反射不用知道类名,可以直接实例化类,也就是不用硬编码. 有人问了,不知道类名那怎么反射呢? 例子: 通过new,我们这么写: A a = New A(

Java反射机制的适用场景及其利与弊

摘自: https://blog.csdn.net/zolalad/article/details/29370565 一.反射的适用场景是什么? 1).Java的反射机制在做基础框架的时候非常有用,有一句话这么说来着:反射机制是很多Java框架的基石.而一般应用层面很少用,不过这种东西,现在很多开源框架基本都已经给你封装好了,自己基本用不着写.典型的除了Hibernate之外,还有Spring也用到很多反射机制.经典的就是在xml文件或者properties里面写好了配置,然后在Java类里面解

Android学习笔记之图片轮播...

PS:一个bug又折腾了一个下午....哎... 学习内容: 1.Android利用ViewPager和PagerAdapter实现图片轮播... 2.使用反射机制获取Android的资源信息...     图片轮播是非常常见的一种动画效果,在app中也是很常用的一个效果,这里就简单的来实现一下这个功能,Android中想要实现图片轮播,需要使用到ViewPager这个控件来实现,这个控件的主要功能是实现图片的滑动效果...那么有了滑动,在滑动的基础上附上图片也就实现了图片轮播的效果...这个控

机房收费总结之硕果累累

二.技术应用 1.设计模式的实践 在个人版机房重构中,我们尽可能的加入设计模式,目的就是学习设计模式如何应用,加深对设计模式的理解. 在整体架构中,应用了抽象工场+反射,目的是创建接口.好处自然是降低了B层与接口层的耦合度,从而使系统更加的灵活.当然,在U层与B层之间加入外观,应用外观模式,同样是为了解耦合. 在下机计算金额中,自然会用到策略模式.当时我仿照着抽象工厂+反射的例子,将策略模式也加上了反射,当时也不清楚为什么要加,只是感觉要加上,后来才发现,反射可以很方便的遵守开闭原则,当发生变化

阻抗匹配基础

英文名称:impedance matching 基本概念 信号传输过程中负载阻抗和信源内阻抗之间的特定配合关系.一件器材的输出阻抗和所连接的负载阻抗之间所应满足的某种关系,以免接上负载后对器材本身的工作状态产生明显的影响.对电子设备互连来说,比如信号源连放大器,前级连后级,仅仅要后一级的输入阻抗大于前一级的输出阻抗5-10倍以上,就可觉得阻抗匹配良好:对于放大器连接音箱来说,电子管机应选用与其输出端标称阻抗相等或接近的音箱,而晶体管放大器则无此限制,能够接不论什么阻抗的音箱. 匹配条件 ①负载阻

眼图综述报告

目录 1. 眼图的形成 ...................................................................................................................................... 2 1.1 传统的眼图生成方法 .......................................................................................