枚举就是让某个类型的变量的取值只能是若干个值中的一个,否则编译器就会报错。枚举可以让编译器在编译的时候就可以控制源程序中填写的非法值,普通变量在开发的时候无法实现这一目标。
枚举的实现就是:1、用普通的类,定义一个私有的构造方法
2、每个元素都有一个公有的静态成员变量表示
3、可以有若干公有方法或抽象方法
普通类实现过程如下:
public abstract class WeekDay {
private WeekDay(){}
//加一对{}表示内部类,也是匿名类,创建的对象由子类完成
public static final WeekDay MON=new WeekDay(){
public WeekDay nextDay(){
return Tue;
}
};
public static final WeekDay Tue=new WeekDay(){
@Override
public WeekDay nextDay() {
// TODO Auto-generated method stub
return MON;
}
};
public abstract WeekDay nextDay();
@Override
public String toString() {
return this==MON?"MON":"Tue";
}
由java提供的枚举类型实现如下:
public enum WeekDay1{
SUN,MON,TUE,WED,THI,FRI(3),STU;
private WeekDay1(){}
private WeekDay1(int a){System.out.println("呵呵 ");}
}
如果想让调用枚举的时候指定自己带参数的构造方法刚可以在列出的枚举值的后面加()向里面传入相对应的参数。
枚举其实实质也是一个类,你同样可以向里面加入其它的一些方法等,但是这些东西都必须加在枚举值的后面。