枚举类
枚举类型 enum type 是一种特殊的数据类型,可以使一个变量值为一组预定义的常量来。变量值必须等于预定义的常量值中的一个。常见的例子包括指南者中的方向(值 NORTH, SOUTH, EAST, and WEST) 以及一周中的每一天.
因为他们是常量,所以枚举类的成员都是用大写字母表示。
Java编程语言中,你可以使用enum
关键字定义枚举类。例如,一周中的每一天可以定义如下:
|
|
你可以在任何你想表达一组固定的常量集合时使用枚举类。包含了自然界中的列举类型例如太阳系中的行星以及任何你可能在编译时就知道的任何可能值—例如,菜单中的选项,命令行中的标记等等.
以下代码是如何使用上面定义的Day
枚举类型:
|
|
输出如下:
|
|
Java编程语言中的枚举类型比其他语言中的要更加欠打。 enum
声明定义了一个类(交过枚举类型 enum type).枚举类型,类体也可以包含方法以及其他成员。编译器在创建枚举类型时会自动的增加一些特殊的代码。例如,他们有已个静态的values
方法可以返回包含所有定义的枚举值的数据。这个方法通常与for-each
结构结合使用,来迭代枚举类中的所有类型。例如,下面的代码 Planet
类例子遍历了太阳系中的所有行星.
|
|
注意:所有的枚举类型简单的继承了类 java.lang.Enum
。因为Java只能继承自一个类(参考 Declaring Classes).Java不支持多重继承 (参考 Multiple Inheritance of State, Implementation, and Type),因此所有的枚举类都不能再继承任何类。
下面的例子中,Planet
是一个枚举类,代表了太阳系中的所有行星.他们通过的常量属性质量和半径来定义。
每一个枚举常量定义的同时包含了质量与半径参数。这些参数在常量创建的时候传递给构造器。Java要求常量必须首先声明,优先与任何的成员和方法。因此,当枚举类有额外的字段和方法时,枚举常量结束时必须以分号semicolon结束.
Note:枚举类的构造器必须是私有级别或者是包级的访问权限。它将在自动创建定义在枚举类体开始的常量。你不能自己调用枚举类的构造方法。
另外,对于他的属性和构造器,Planet
提供方法允许你获取每一个行星的表面重力以及重量。下面是一个简单的程序,获取你在地球的体重(任一单位)并计算出你在其他所有星球的体重(同样单位下):
|
|
如果你运行这个类 Planet.class
并且输入参数175, 可以说的如下输出:
|
|