1、枚举
枚举(Enum)就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否侧,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。枚举是JDK1.5增加的一个新特性,它使得一个类只能取固定的值。以下是一个简单的枚举小程序。
public enum WeekDay{
SUN,MON,TUE,WED,THU,FRI,SAT;
}
枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔。如果把枚举中成员方法或变量等放在枚举元素的前面,编译器就会报告错误。枚举还可以带有构造方法,但是构造方法必须定义成私有的。如果有多个构造方法,可以在枚举元素后面加上参数列表用来选择构造方法。下面是一个带有构造方法的枚举。
public enum WeekDay{
SUN(1),MON(1),TUE,WED,THU,FRI,SAT;
private WeekDay(){System.out.println("1111");}
private WeekDay(int day){System.out.println("2222");}
}
枚举中还可以带有抽象方法,下面定义一个枚举实现以下功能:
定义枚举TrafficLamp,实现抽象的next方法:每个元素分别是由枚举类的子类来生成的实例对象,这些子类采用类似内部类的方式进行定义。最后增加上表示时间的构造方法。
public enum TrafficLamp{
RED(30){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return GREEN;
}
},
GREEN(45){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return YELLW;
}
},
YELLW(5){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return RED;
}
};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){this.time=time;}
}