1.什么是在java反射机制
Java运行时环境中,
对于任意一个类,能否知道这个类有哪些属性和方法?
对于任意一个对象,能否调用它的任意一个方法?
答案是肯定的。
这种动态获取类的信息以及动态调用对象的方法的功能
来自于Java 语言的反射(Reflection)机制。
2.Java 反射机制主要功能
在运行时判断任意一个对象所属的类。
在运行时构造任意一个类的对象。
在运行时判断任意一个类所具有的成员变量和方法。
在运行时调用任意一个对象的方法
3.动态(或准动态)语言
Reflection 是Java被视为动态(或准动态)语言的一个关键性质。
这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,
包括其modifiers(修饰符,诸如public, static 等等)、
superclass(父类,例如Object)、
实现之interfaces(例如Serializable),
也包括fields(成员变量)和methods(方法)的所有信息,并可于运行时改变fields内容或调用methods
一般而言,开发者社群说到动态语言,
大致认同的一个定义是:
“程序运行时,
允许改变程序结构或变量类型
,这种语言称为动态语言”。
从这个观点看,Perl,Python,Ruby是动态语言,
C++,Java,C#不是动态语言
3.相关的类以及方法
这些类都位于java.lang.reflect包中
Class类:代表一个类。
Field 类:代表类的成员变量(成员变量也称为类的属性)。
Method类:代表类的方法。
Constructor 类:代表类的构造方法。
Array类:提供了动态创建数组,以及访问数组的元素的静态方法