这些 Java 教程是为 JDK 8 编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
有关 Java SE 9 及后续版本中更新的语言特性的摘要,请参阅Java 语言更改。
有关所有 JDK 发行版的新功能、增强功能以及已删除或不再推荐使用的选项的信息,请参阅JDK 发行说明。
反射定义了一个接口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
中,与方法类似,但有两个主要的区别:首先,构造函数没有返回值;其次,构造函数的调用会为给定类创建一个新的对象实例。