在JDK 5 之前,我们定义常量都是: public static fianl… 。
JDK 5 之后,枚举(Enum)引入了。我们可以使用枚举定义定义常量。
可以将枚举看成一种特殊的类,他的声明的变量默认就有“public static fianl”修饰。
枚举都是继承自“java.lang.Enum”类。
作用:当需要定义一组常量时,可以使用枚举类型
创建枚举类需要使用“enum”关键字。创建的常量用逗号分隔。
enum 枚举名字 { 枚举体(常量列表) }
例如,定义一组季节(Season)的常量。最常使用这个。
如果需要使用时,只需要“枚举类名.属性名”即可,返回值是常量的名称(也就是属性名)。
public enum SeasonEnum { SPRING, SUMMER, AUTUMN, WINTER }
给枚举属性添加一个值,该值表示枚举值为第几个季节。
注意:枚举体(属性)添加了“常量列表”,需要创建一个值,同时给该值一个构造器。
public enum SeasonEnum { SPRING(1), SUMMER(2), AUTUMN(3), WINTER(4); private int ordinal; SeasonEnum(int ordinal) { this.ordinal = ordinal; } /** 获取序数(也就是第几个季节) */ public int getOrdinal() { return ordinal; } }
测试:获取枚举常量名称,枚举的次序,枚举的值。
可以通过“name()”和“ordinal()”方法获取值。(方法继承自枚举类的父类Enum)
SeasonEnum spring = SeasonEnum.SPRING; System.out.printf("枚举常量的名称:%s\n枚举常数的序数:%s \n", spring.name(), spring.ordinal()); ystem.out.printf("枚举的值:%s", spring.getSequence());
输出:"SPRING"代表枚举的名称,"0"代表当前枚举在第一个位置(下标0),"1"代表他的值为1
枚举常量的名称:SPRING 枚举常数的序数:0 枚举的值:1
枚举类还有一个values()方法,可以用来获取枚举类的所有枚举属性。
例如:SeasonEnum.values()。(可以获取枚举类SeasonEnum的所有属性)
参考:《阿里巴巴Java开发手册(华山版)》
正例:
public enum SeasonEnum { SPRING(1), SUMMER(2), AUTUMN(3), WINTER(4); private int seq; SeasonEnum(int seq) { this.seq = seq; } public int getSeq() { return seq; } }
参考:《阿里巴巴Java开发手册(华山版)》
《阿里巴巴Java开发手册(华山版)》
Java高级特性-枚举
Java 枚举(enum) 详解7种常见的用法