枚举类型的对象是有限、固定的几个常量对象。例如季节,只有春夏秋冬。如果你创建了一个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):按照常量对象的顺序比较