枚举:
要让某个类型的变量的取值只能为已经设置中的一个,不然就编译报错。可以让编译器在编译时可以控制源程序中填写的非法值。普通类无法实现。
枚举类型是一种类型,用于定义变量,以限制变量的赋值 赋值时通过"枚举名.值"来取得相关枚举中的值
相当于对类进行限定,类中成员更加严谨。可以在构造函数中设置参数,通过成员对象添加,设置抽象方法,通过成员对象内部类来实现。当只有一个成员时,可以作为单例的实现方式。
当一个类对象可以确定并有一定关系时,就可以定义枚举类,例:星期,红绿灯,时间等。
/*
* 枚举
* 有抽象方法,构造参数的枚举
*
*/
public class EnumDemo
{
public static void main(String[] args)
{
WeekDay sun = WeekDay.SUN;
//建立指定对象
System.out.println(sun);
//SUN
System.out.println(sun.name());
//SUN 返回此枚举常量的名称,在其枚举声明中对其进行声明。
System.out.println(sun.ordinal());
//0 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
System.out.println(sun.valueOf("FRI"));
//FRI 返回带指定名称的指定枚举类型的枚举常量。
System.out.println(sun.values().length);
//7返回数组
}
}
enum WeekDay
{
SUN,MON,TUE,WED,THU,FRI,SAT;
}
enum TrafficLight
{
RED(20)//构造参数
{
//抽象方法在内部类中实现
public TrafficLight nextLight()
{
return GREEN;
}
},
GREEN(30)
{
public TrafficLight nextLight()
{
return YELLOW;
}
},
YELLOW(15)
{
public TrafficLight nextLight()
{
return RED;
}
};
public abstract TrafficLight nextLight();
private int time;
private TrafficLight(int time)//构造函数私有
{
this.time=time;
}
}