一、Java语言的反射机制:
1.Java的反射(reflection)机制是指在程序的运行状态中,
-
- 可以构造任意一个类的对象
- 可以了解任意一个对象所属的类
- 可以了解任意一个类的成员变量和方法
- 可以调用任意一个对象的属性和方法
这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。(反射被视为动态语言的关键)
2.Java反射机制主要提供了以下功能:
- 在运行时判断任意一个对象所属的类;
- 在运行时构造任意一个类的对象;
- 在运行时判断任意一个类所具有的成员变量和方法;
- 在运行时调用任意一个对象的方法;
- 生成动态代理。
二、获取Class对象:
1.对于每一个类在加载时都会有唯一的Class对象,Class对象中包含了所有需要动态获取的类的信息,所有Class类是Reflection API中的核心类
2.获取Class对象的四种方法:
-
- obj.getClass()
- class属性
- Class.forName()
- ClassLoader
例:
1 public class Test1 { 2 public static void main(String[] args) throws ClassNotFoundException { 3 //得到Class类对象的四种方法 4 //1. 5 Object obj = new String(); 6 Class clz1 = obj.getClass(); 7 8 //2. 9 Class clz2 = String.class; 10 11 //3. 12 try { 13 Class clz3 = Class.forName("java.lang.String"); 14 } catch (ClassNotFoundException e) { 15 e.printStackTrace(); 16 } 17 18 //4. 19 ClassLoader cl = ClassLoader.getSystemClassLoader(); 20 Class clz4 = cl.loadClass("java.util.ArrayList"); 21 } 22 }
三、Reflection(API):
在JDK中,主要由以下类来实现Java反射机制,这些类都位于java. lang reflect包中:
- class:类:代表个类
- Field类:代表类的成员变量(成员变量也称为类的属性)
- Method类:代表类的方法
- Modifier类:代表修饰符
- Constructor类:代表类的构造方法
- Araay类:提供了动态创建数组,以及访问数组的元素的静态方法
注意:
在 Class对象的方法中,所有 getXXX方法只能反射出 成员),但是只限于类本身的成员
心得:
好运不会总是降临在你身上,你的努力是你唯一能站稳脚跟的依靠。