反射
1.java语言的反射机制
Java 反射是Java语言的一个很重要的特征,它使得Java具有了“动态性”。
Java提供了一套机制来动态获取类的信息以及动态调用对象的方法的功能,
这套机制就叫——反射 反射机制是如今很多流行框架的实现基础,其中包括Struts、Spring、Hibernate等。
在运行时判断任意一个对象所属的类。 在运行时构造任意一个类的对象。 在运行时判断任意一个类所具有的成员变量和方法。 在运行时调用任意一个对象的方法
2.Reflection 是Java被视为动态(或准动态)语言的一个关键性质。
这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息, 包括其modifiers(诸如public, static 等等)、superclass(例如Object)、实现之interfaces(例如Serializable), 也包括fields和methods的所有信息,并可于运行时改变fields内容或调用methods
在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中:
Class类:代表一个类。
Field 类:代表类的成员变量(成员变量也称为类的属性)。
Method类:代表类的方法。
Modifier类:代表修饰符。
Constructor 类:代表类的构造方法。
Array类:提供了动态创建数组,以及访问数组的元素的静态方法
3.获取class对象
对于每一个类在加载时都会有一个唯一的Class对象, Class对象中包含了所有需要动态获取的类的信息, 所以Class类是Reflection API 中的核心类 。
获取Class对象的方法?
obj.getClass();
class属性
Class.forName();
ClassLoader
总结:
在Class对象的方法中,所有getXXX方法只能反射出public类型的成员,包括父类的public成员,
所有getDeclaredXXX可以反射出类的所有成员(包括类的私有成员),但是只限于类本身的成员。
心得:
今天能做完的事情一定不要拖到明天,要学会自主学习自主学习