Java 反射机制 Java 反射机制是 Java 语言的一个重要特征,它使得 Java 具有“动态性”。在 Java 运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于 Java 语言的反射(Reflection)机制。 Java 反射机制主要提供了以下功能: * 在运行时判断任意一个对象所属的类。 * 在运行时构造任意一个类的对象。 * 在运行时判断任意一个类所具有的成员变量和方法。 * 在运行时调用任意一个对象的方法。 Reflection 是 Java 被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过 Reflection APIs 取得任何一个已知名称的 class 的内部信息,包括其 modifiers(诸如 public, static 等等)、superclass(例如 Object)、实现之 interfaces(例如 Serializable),也包括fields 和 methods 的所有信息,并可于运行时改变 fields 内容或调用 methods。 在 JDK 中,主要由以下类来实现 Java 反射机制,这些类都位于 java.lang.reflect 包中: * Class 类:代表一个类。 * Field 类:代表类的成员变量(成员变量也称为类的属性)。 * Method 类:代表类的方法。 * Constructor 类:代表类的构造方法。 * Array 类:提供了动态创建数组,以及访问数组的元素的静态方法。 下面给出几个例子看看 Reflection API 的实际运用: 一、通过 Class 类获取成员变量、成员方法、接口、超类、构造方法等: * 通过 getClass() 方法获取对象的类型。 * 通过 getName() 方法获取类的完整名字。 * 通过 getFields() 方法获取类的 public 类型的属性。 * 通过 getDeclaredFields() 方法获取类的所有属性。 * 通过 getMethods() 方法获取类的 public 类型的方法。 * 通过 getDeclaredMethods() 方法获取类的所有方法。 * 通过 getMethod(String name, Class[] parameterTypes) 方法获取类的特定方法。 * 通过 getConstructors() 方法获取类的 public 类型的构造方法。 * 通过 getConstructor(Class[] parameterTypes) 方法获取类的特定构造方法。 下面给出一个综合运用的例子: public class RefConstructor { public static void main(String args[]) throws Exception { RefConstructor ref = new RefConstructor(); ref.getConstructor(); } public void getConstructor() throws Exception { Class c = null; c = Class.forName("java.lang.Long"); Class cs[] = {java.lang.String.class}; ... } } 在这个例子中,我们使用 Class.forName() 方法获取了 java.lang.Long 类,并使用 getConstructor() 方法获取了该类的构造方法。 Java 反射机制是一个非常重要的特征,它使得 Java 具有“动态性”,并提供了许多实用的功能,例如动态获取类的信息、动态调用对象的方法等。
剩余14页未读,继续阅读
- 粉丝: 2
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助