前言:java如何在运行时识别对象和类的信息.有两种实现方式
-
传统RTTI
-
反射
RTTI和反射有什么区别?
对RTTI来说,编译器在编译时打开和检查.class文件而反射机制来说,.class文件在编译时是不可获取得,所以在运行时打开和检查.class文件()
反射是框架设计的灵魂
原理:反射首先是能够获取到Java中的反射类的字节码,然后将字节码中的方法,变量,构造函数等映射成 相应的 Method、Filed、Constructor 等类
应用:取出类的modifiers,数据成员,方法,构造器,和超类
找出某个接口里定义的常量和方法说明.
取得和设定对象数据成员的值,如果数据成员名是运行时刻确定的也能做到.
在运行时刻调用动态对象的方法.
一、反射的概述
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.
二 反射的作用
总结:通过Class类与java.lang.reflect类库一起对反射进行支持
反射的使用网上教程很多,研究Class类,Filed,Method,Constructor,Modifier类即可掌握反射