枚举类型的对象是有限、固定的几个常量对象。例如季节,只有春夏秋冬。如果你创建了一个season类,你当然有义务维护这个类的实例对象只能是春(SPRING)、夏(SUMMER)、秋(AUTUMN)、冬(WINTER)这四个。或者员工的状态如只有休假,空闲,忙碌这几个。这个时候就体现出枚举类的作用了,java中枚举类型就是针对这样的场景需求所设计的。
/** * 枚举类的后缀建议为Enum,枚举类型的实例对象建议全大写(这样做符合JAVA的规范) */ public enum SeasonEnum{ SPRING,SUMMER,AUTUMN,WINTER }语法格式
//形式一:枚举类型中只有常量对象列表 【修饰符】 enum 枚举类型名{ 常量对象列表 } //形式二:枚举类型中只有常量对象列表 【修饰符】 enum 枚举类型名{ 常量对象列表; 其他成员列表; }枚举常量对象列表必须在枚举类型的首行
在其他类中如何获取枚举的常量对象 //获取一个常量对象 枚举类型名.常量对象名 //获取一个常量对象 枚举类型名.valueOf("常量对象名") //获取所有常量对象 枚举类型名[] all = 枚举类型名.values(); 枚举类型的特点(1)枚举类型有一个公共的基本的父类,是java.lang.Enum类型,所以不能再继承别的类型
(2)枚举类型的构造器必须是私有的
(3)枚举类型可以实现接口
interface MyRunnable{ void run(); } enum Gender implements MyRunnable{ NAN,NV; public void run(){ //... } } //或 enum Gender implements MyRunnable{ NAN{ public void run(){ //... } },NV{ public void run(){ //... } }; } 父类java.lang.Enum类型(1)构造器
protected Enum(String name, int ordinal):由编译器自动调用
(2)String name():常量对象名
(3)int ordinal():返回常量对象的序号,第一个的序号是0
(4)String toString():返回常量对象名,如果子类想重写,需要手动
(5)int compareTo(Object obj):按照常量对象的顺序比较