# 枚举类型
一个 枚举类型 是一种特殊的数据类型,使一个变量是一组预定义的常量。变量必须等于一个已经预定义的值。常见的例子包括罗盘方向(NORTH、SOUTH、EAST 和 WEST 的值)和一周的几天。
因为它们是常量,枚举类型的字段的名称是大写字母。
在 Java 编程语言中,您可以使用 enum 关键字定义枚举类型。例如,您将指定一个星期的枚举类型为:
任何时候您需要使用一组固定的常量来使用枚举类型。这包括自然枚举类型,例如我们的太阳系中的行星和数据集,您可以在编译时知道所有可能的值 - 例如菜单上的选项,命令行标志等。
以下是一些代码,显示如何使用上面定义 Day 的枚举:
程序输出
Java 编程语言枚举类型比其他语言的类型更强大。该 enum 声明定义一个类(称为枚举类型)。枚举类体可以包括方法和其他字段。当它创建一个枚举时,编译器会自动添加一些特殊的方法。例如,它们有一个静态 values 方法,它返回一个包含枚举所有值的数组,并按它们被声明的顺序。该方法通常与 for-each 结构组合使用以迭代枚举类型的值。例如,下面的 Planet 类示例中的代码遍历太阳系中的所有行星。
TIP
所有枚举都会隐式继承 java.lang.Enum。因为一个类只能继承一个父类(请参阅 声明类),所以 Java 语言不支持状态的多重继承(请参见 多重继承),因此枚举不能继承其他任何内容。
在以下示例中,Planet 是表示太阳系中行星的枚举类型。它们被定义为具有恒定的质量和半径属性。
每个枚举常数都被声明为质量和半径参数的值。当创建常量时,这些值将传递给构造函数。Java 要求在任何字段或方法之前首先定义常量。此外,当有字段和方法时,枚举常量的列表必须以分号结尾。
TIP
枚举类型的构造函数必须是包私有或私有访问。它会自动创建在枚举正文开头定义的常量。你不能自己调用枚举构造函数。
程序输出
虽然我不知道上面到底是在计算什么。但是枚举的用法就如上,和普通对象类似,只是不能在外部实例化。