枚举产生的原因:枚举就是让某个类型的变量的取值只能为若干固定值中的一个
,否则编译器就报错,枚举可以让编译器在编译时就可以控制源程序中填写的非
法值,普通变量的方式无法在开发阶段就实现这一目标。我们的一周有七天,若
不小心在开发中将值设置为不符合常理的数编译时不会报错;
这时候我们可以自定义一个类型,当用到这个类型的时候,就只能取这个类型中
规定的值,如果不是的话就会编译提醒不合法,我们说能在编译时发现的问题尽
量不要拖到运行期间。这时候我们如果已经定义好weekday这个类的取值只能是1
-7那么一下程序就会编译通不过。
也就是说,枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象。
枚举可以有抽象方法以及构造方法,每个枚举元素要实现抽象方法
public class EnumDemo {
public static void main(String[] args) {
Light.RED.getNext().getNext().getNext();
}
}
enum Light
{
RED(30)
{
public Light getNext() {
System.out.println("red");
return GREEN;
}},
GREEN(35)
{
public Light getNext() {
System.out.println("green");
return YELLOW;
}},
YELLOW(5)
{
public Light getNext() {
System.out.println("yellow");
return RED;
}};
private int time;
private Light(int time)
{this.time = time;}
public abstract Light getNext();
}
|