Lesson: Members
反射定义了一个interfacejava.lang.reflect.Member,该interface由java.lang.reflect.Field,java.lang.reflect.Method和java.lang.reflect.Constructor实现。这些对象将在本课中讨论。对于每个成员,类将描述相关的 API,以检索声明和类型信息,该成员唯一的任何操作(例如,设置字段的值或调用方法)以及常见的错误。每个概念将通过代码 samples 和相关输出进行说明,这些代码 samples 和相关输出近似一些预期的反射用途。
Note:
根据Java 语言规范,Java SE 7 版,类的* members 是类主体的继承组件,包括字段,方法,嵌套类,interface和枚举类型。由于构造函数未继承,因此它们不是成员。这与java.lang.reflect.Member的实现类不同。
Fields
字段具有类型和值。 java.lang.reflect.Field类提供了用于访问类型信息以及在给定对象上设置和获取字段值的方法。
-
获取字段类型描述了如何获取字段的声明类型和泛型类型
-
检索和解析字段修饰符显示了如何获取字段声明的一部分,例如
public
或transient
-
获取和设置字段值说明了如何访问字段值
-
Troubleshooting描述了一些常见的编码错误,这些错误可能会引起混淆
Methods
方法具有返回值,参数,并且可能引发异常。 java.lang.reflect.Method类提供用于获取参数类型信息和返回值的方法。它也可以用于调用给定对象上的方法。
-
获取方法类型信息显示如何枚举在类中声明的方法并获取类型信息
-
获取方法参数的名称显示了如何检索方法或构造函数参数的名称和其他信息
-
检索和解析方法修饰符描述了如何访问和解码修饰符以及与该方法相关的其他信息
-
Invoking Methods说明了如何执行方法并获得其返回值
-
Troubleshooting涵盖了查找或调用方法时遇到的常见错误
Constructors
构造函数的反射 API 在java.lang.reflect.Constructor中定义,与方法的相似,但有两个主要 exception:首先,构造函数没有返回值;第二,构造函数没有返回值。其次,构造函数的调用会为给定类创建对象的新实例。
-
Finding Constructors说明了如何检索具有特定参数的构造函数
-
检索和解析构造函数修饰符显示了如何获取构造函数声明的修饰符以及有关该构造函数的其他信息
-
创建新的类实例显示了如何通过调用对象的构造函数来实例化该对象的实例
-
Troubleshooting描述了在查找或调用构造函数时可能遇到的常见错误