用来简洁的表示固定的值
TimeUnit
Month月份
DayOfWeek星期
线程状态Thread.State
定义格式
public enum 名称 {
枚举项1,枚举项2,枚举项3;
}
public enum Season {
SRPING,SUMMER,AUTUMN,WINTER;
}
枚举的特点
所有枚举类都是Enum的子类
// 可以理解为
public enum Season /*extends Enum{}
枚举类名.枚举项名称。访问枚举项
System.out.println(Season.SPRING);
System.out.println(Season.SPRING);
System.out.println(Season.SPRING);
System.out.println(Season.WINTER);
【核心】每一个枚举项其实就是该枚举的一个对象
public enum Season {
public static final SRPING = new Season();
public static final SUMMER = new Season();
public static final AUTUMN = new Season();
public static final WINTER = new Season();
}
枚举类的第一行上必须是枚举项。最后一个枚举项后的分号不要省略
public enum Season {
SRPING,
SUMMER,
AUTUMN,
WINTER;
}
枚举类也可以有抽象方法,但是枚举项必须重写该方法
public abstract void show();
SPRING("春"){
@Override
public void show() {
}
// 可以理解为
/*public static final */SRPING/* = new Season*/("春"){
@Override
public void show() {
}
};
枚举的方法
valueOf(Class<T> type,String name) 调用者 ,父类 Enum
values() 调用者,枚举类
其他方法枚举项直接调用的
String name()获取枚举项的名称
int ordinal()返回枚举项在枚举类中的索引值
int compareTo(E o)比较两个枚举项,返回的是索引值的差值
String toString()返回枚举常量的名称
static <T> T valueOf(Class<T> type,String name)获取指定枚举类中的指定名称的枚举值
values()获得所有的枚举项