# 课程：会员

> 原文： [https://docs.oracle.com/javase/tutorial/reflect/member/index.html](https://docs.oracle.com/javase/tutorial/reflect/member/index.html)

反射定义界面 [`java.lang.reflect.Member`](https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Member.html) ，其由 [`java.lang.reflect.Field`](https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html) ， [`java.lang.reflect.Method`](https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html) 和 [`java.lang.reflect.Constructor`](https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Constructor.html) 实现。这一对象将在本课程中讨论。对于每个成员，本课程将描述用于检索声明和类型信息的关联 API，成员特有的任何操作（例如，设置字段的值或调用方法）以及常见的错误。将使用代码样本和相关输出来说明每个概念，其近似于一些预期的反射用途。

* * *

**Note:** According to [_The Java Language Specification, Java SE 7 Edition_](https://docs.oracle.com/javase/specs/jls/se7/html/index.html), the _members_ of a class are the inherited components of the class body including fields, methods, nested classes, interfaces, and enumerated types. Since constructors are not inherited, they are not members. This differs from the implementing classes of [`java.lang.reflect.Member`](https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Member.html).

* * *

## 字段

字段具有类型和值。 [`java.lang.reflect.Field`](https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html) 类提供了访问类型信息以及设置和获取给定对象上的字段值的方法。

*   [获取字段类型](fieldTypes.html)描述了如何获取字段的声明类型和泛型类型
*   [检索和解析字段修饰符](fieldModifiers.html)显示如何获取字段声明的部分，如`public`或`transient`
*   [获取和设置字段值](fieldValues.html)说明了如何访问字段值
*   [故障排除](fieldTrouble.html)描述了一些可能导致混淆的常见编码错误

## 方法

方法具有返回值，参数，并可能抛出异常。 [`java.lang.reflect.Method`](https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html) 类提供了获取参数和返回值的类型信息的方法。它也可以用于调用给定对象的方法。

*   [获取方法类型信息](methodType.html)显示如何枚举类中声明的方法并获取类型信息
*   [获取方法参数的名称](methodparameterreflection.html)显示如何检索方法或构造函数参数的名称和其他信息
*   [检索和解析方法修饰符](methodModifiers.html)描述了如何访问和解码修饰符以及与该方法相关的其他信息
*   [调用方法](methodInvocation.html)说明了如何执行方法并获取其返回值
*   [故障排除](methodTrouble.html)涵盖了查找或调用方法时遇到的常见错误

## 构造函数

构造函数的 Reflection API 在 [`java.lang.reflect.Constructor`](https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Constructor.html) 中定义，与方法类似，有两个主要的例外：第一，构造函数没有返回值;第二，调用构造函数为给定的类创建一个对象的新实例。

*   [Finding Constructors](ctorLocation.html) 说明了如何检索具有特定参数的构造函数
*   [检索和解析构造函数修饰符](ctorModifiers.html)显示如何获取构造函数声明的修饰符以及有关构造函数的其他信息
*   [创建新类实例](ctorInstance.html)展示了如何通过调用其构造函数来实例化对象的实例
*   [故障排除](ctorTrouble.html)描述了在查找或调用构造函数时可能遇到的常见错误