Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
反射通常由程序使用,这些程序需要能够检查或修改在 Java 虚拟机中运行的应用程序的运行时行为。这是一个相对高级的功能,只有那些掌握了语言基础知识的开发人员才能使用。考虑到这一点,反射是一种强大的技术,可以使应用程序执行本来不可能的操作。
反射是强大的,但不应随意使用。如果可以在不使用反射的情况下执行操作,则优选避免使用它。通过反射访问代码时,应牢记以下问题。
private
字段和方法,因此使用反射会导致意外的副作用,这可能导致代码功能失常,可能会破坏可移植性。反射代码会破坏抽象,因此可能会随着平台的升级而更改行为。此路径包含用于访问和操作类,字段,方法和构造函数的反射的常见用法。每课包含代码示例,提示和疑难解答信息。
Class
对象的各种方法,并使用它来检查类的属性,包括其声明和内容。enum
类型(其定义唯一的命名对象实例)。示例代码显示了如何获取数组的组件类型以及如何使用数组或 enum
类型设置和获取字段。此路径中的示例旨在用于试验反射 API。因此,异常的处理与生产代码中使用的不同。特别是,在生产代码中,建议不要转储用户可见的堆栈跟踪。