【1】它是JDK1.5的特性
【2】有固定的内容时,可以使用枚举,譬如四季,年月等等
【3】枚举个数是固定的,枚举不允许外部随意改动。定义好之后,便不可以改变。
【4】枚举本质上是一个类
【5】JDK1.5之后定义枚举,枚举必须在有效代码的第一行。
【6】枚举中的值建议全部大写
【7】枚举和字符串比较,字符串的值可以随意修改,但是枚举在编译阶段就可以检查值是否正确。这个和泛型有异曲同工之妙。
将错误由运行阶段转到编译阶段。
【8】使用枚举类型进行分支判断
public class EnumDemo {
public static void main(String[] args) {
Season se = Season.AUTUMER;
switch (se) {
case SPRING:
se.play();
break;
case SUMMER:
se.play();
break;
case AUTUMER:
se.play();
break;
case WINTER:
se.play();
break;
default:
break;
}
}
}
enum Season{
SPRING {
@Override
public void play() {
System.out.println("春天适合去踏青");
}
},SUMMER {
@Override
public void play() {
System.out.println("夏天适合去游泳");
}
},AUTUMER {
@Override
public void play() {
System.out.println("秋天适合去旅游");
}
},WINTER {
@Override
public void play() {
System.out.println("冬天适合去吃火锅");
}
};
public abstract void play();
}
分析:
其中“SPRING”等价于“public final static Season Spring = new Season()”。
在JDK1.5之前,枚举类型就是这样表示的。而且枚举类型的构造方法是私有地(private)。为了防止外部能够直接访问,而更改内容。
public abstract void play();表示抽象方法。
枚举中可以有抽象方法,也可以有非抽象方法。