# 枚举类型

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

_enum_ 是一种语言结构，用于定义类型安全的枚举，可在需要一组固定的命名值时使用。所有枚举都隐式扩展 [`java.lang.Enum`](https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html) 。枚举可以包含一个或多个 _ 枚举常量 _，它们定义枚举类型的唯一实例。枚举声明定义 _ 枚举类型 _，它与类非常相似，因为它可能包含诸如字段，方法和构造函数之类的成员（具有一些限制）。

由于枚举是类，因此反射无需定义显式`java.lang.reflect.Enum`类。唯一针对枚举的反射 API 是 [`Class.isEnum()`](https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#isEnum--) ， [`Class.getEnumConstants()`](https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getEnumConstants--) 和 [`java.lang.reflect.Field.isEnumConstant()`](https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html#isEnumConstant--) 。涉及枚举的大多数反思操作与任何其他类或成员相同。例如，枚举常量在枚举上实现为`public static final`字段。以下部分显示如何使用 [`Class`](https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html) 和 [`java.lang.reflect.Field`](https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html) 与枚举。

*   [检查枚举](enumMembers.html)说明了如何检索枚举的常量以及任何其他字段，构造函数和方法
*   [使用枚举类型获取和设置字段](enumSetGet.html)显示如何使用枚举常量值设置和获取字段
*   [故障排除](enumTrouble.html)描述了与枚举相关的常见错误

有关枚举的介绍，请参阅[枚举类型](../../java/javaOO/enum.html)课程。