1.关键词声明
先来看Java中的枚举类声明。Java中是使用enum关键词声明枚举类,具体定义放在一对大括号内,枚举的语法格式如下图:
enum前面的修饰符是[public]表示public或省略。Public是公有访问级别,可以在任何地方访问。省略是默认访问级别,只能在当前包中访问。
“枚举名”是该枚举类的名称。它首先应该是有效的标识符,其次应该遵守Java命名规范。它应该是一个名称,如果采用英文单词命名,首字母应该大写,且应尽量用一个英文单词。“枚举常量列表”是枚举的核心,它有一组相关常量组成。
2.最简单形式的枚举类
如果采用枚举类来表示工作日,最简单枚举类WeekDays具体代码如下图:
在枚举类WeekDays中定义了5个常量,使用枚举类WeekDays代码如下图:
输出结果如下图:
上述代码第①行是声明工作日变量day,day是WeekDays枚举类型,取值是WeekDays.FRIDAY,是枚举类中定义的枚举常量。day=WeekDay.FRIDAY赋值过程中实例化WeekDays枚举类对象,并初始化为WeekDays.FRIDAY。注意赋值表达式是“枚举类型名.枚举常量”的形式。
代码第②行day对象日志输出结果不是整数,而是FRIDAY。
枚举类与switch语句能够很好地配合使用,代码第③行switch表达式直接使用day枚举对象,case常量直接使用枚举常量,见代码第④行,而且不需要枚举类名作为前缀,使用起来比较简洁。
在switch中使用枚举类型时,switch语句中的case分支语句个数应该对应枚举常量个数,不要多也不要少,当使用default时,default应该只表示等于最后一个枚举常量情况。上述示例代码第⑤行是switch语句中使用default,default表示的是FRIDAY情况。
3.枚举类中成员变量和成员方法
枚举类可以像类一样包含成员变量和成员方法,成员变量可以是实例变量也可以是静变量,成员方法可以是实例方法,也可以是静态方法,但不能是抽象方法。示例代码如下图:
上述代码第①行在枚举类WeekDays中添加了一些成员变量和成员方法,这些方法还可以覆盖枚举父类中的方法,见代码第②行的toString()方法。
添加的其他成员的枚举类需要注意,“枚举常量列表”语句必须是枚举类中的第一行代码。而且“枚举常量列表”语句后面要加分(;)表示语句的结束,见代码第①行所示。
使用枚举类WeekDays代码如下图: