Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
反射定义了一个接口 java.lang.reflect.Member
,它由 java.lang.reflect.Field
,java.lang.reflect.Method
和 java.lang.reflect.Constructor
实现。这些对象将在这节课中讨论。对于每个成员,本课程将描述用于获取声明和类型信息的关联 API,成员特有的任何操作(例如,设置字段的值或调用方法)以及常见的错误。将使用代码示例和相关输出来说明每个概念,其近似于一些预期的反射用途。
java.lang.reflect.Member
的实现类不同。
字段具有类型和值。java.lang.reflect.Field
类提供了访问给定对象上的字段的类型信息以及设置和获取值的方法。
public
或 transient
方法具有返回值,参数,并可能抛出异常。java.lang.reflect.Method
类提供了获取参数和返回值的类型信息的方法。它也可以用于调用给定对象的方法。
构造函数的反射 API 在 java.lang.reflect.Constructor
中定义,与方法类似,但有两点主要的区别:第一,构造函数没有返回值;第二,调用构造函数为给定的类创建一个对象的新实例。