JAVA 反射学习总结

名词概念的理解


现实中的反射
反射是一种相对的状态或者行为;
就是对 自身的把控,跟操控对方一样,我来控制自己;

大赛临近的时候,刘翔不是经常说么“没有对手,最大的对手就是自己”,这就是反射。


在计算机世界里

主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。


JAVA的反射机制
i.JAVA 反射机制是在 运行状态中,对于任意一个类,都能够知道这个类的所有属性和方
 法;对于任意一个对象,都能够调用它的任意一个方法;这种 动态获取的信息以及动态调用
 对象的方法的功能称为java 语言的反射机制
。所以说,Reflection 是Java 被视为 动态(或准动态)语言的一个关键性质。
ii.这个机制允许程序在运行时透过Reflection APIs 取得任何一个已知名称的class 的内部信息,
  包括其modifiers(诸如public, static 等等)、
  superclass(例如Object)、
  实现之interfaces(例如Cloneable ),
       也包括fields 和methods 的所有信息,并可于运行时改变fields 内容或唤起methods
iii.功能
Java 反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造
任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意

一个对象的方法;生成动态代理。


反射有两个缺点
性能问题
反射是基本的解释性操作,就是你告诉JVM 你要做什么,它就会为你做什么。比直接的代码访问要慢很多。
复杂度高
跟直接编码相比反射技术会使代码内部逻辑变得模糊不清,不便于维护。所以,尽可能少使用反射,只有在一些增加灵活性的地方来使用它。


所在的包
java.lang.relfect;

Java 的类反射所需要的类并不多,它们分别是:Object、Class、Constructor、Field、Method


使用遵行下面三个步骤
i.第一步是获得你想操作的类的java.lang.Class 对象,eg. Class c = Class.forName("java.lang.String");
ii.第二步是调用诸如getDeclaredMethods 的方法,eg. 
iii.一旦取得这个信息,就可以进行第三步了——使用reflection API 来操作这些信息,如下面
这段代码:
Class c = Class.forName("java.lang.String");
Method m[] = c.getDeclaredMethods();
System.out.println(m[0].toString());


由于反射重在思想和底层实现,我们实际应用层基本不会让你去编码的,所以这里不在代码上深入追究了。万一要是用到了看下API 就搞定了。就上面提到的几个类,每个类四个方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值