在Java 运行时环境中,对于任意一个类,能够知道这个类有哪些属性和方法?对于任意一个对象,能够调用它的任意一个方法?答案是肯定的,这种动态获取类的信息,以及动态调用对象的方法的功能来自于Java 语言的反射(Reflection)机制。
Java 反射机制主要提供了一下的功能:
① 在运行时判断任意一个对象所属的类;
② 在运行时构造任意一个类的对象;
③ 在运行时判断任意一个类所具有的成员变量和方法;
④ 在运行时调用任意一个对象的方法;
⑤ 生成动态代理;
在JDK 中,主要由以下类来实现 Java 反射机制,这些类都位于java.lang.reflect 包中。
① Class 类:代表一个类;
② Field 类:代表类的成员变量(成员变量也称为类的属性);
③ Method 类:代表类的方法;
④ Constructor 类:代表类的构造方法;
⑤ Array 类:提供了动态创建数组,以及访问数组元素的静态方法。 |