黑马程序员-枚举与其应用

来源:互联网 发布:柯蓝 知乎 编辑:程序博客网 时间:2024/06/10 22:11
---------------------- android培训、java培训、期待与您交流! ----------------------

为什么要有枚举?枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法制,普通变量的方式在开发阶段无法实现这一目标
例子:用普通类实现枚举功能,定义一个Weekday的类来模拟枚举功能
>私有的构造函数
>每个元素分别用一个公有的静态成员变量表示
>可以有若干个公有方法或抽象方法,例如,要提供的nextDay()方法必须是抽象的。
public enum WeekDay
{
         SUN(1),MON,TUE,WED,THI,FRI,STA;
         private WeekDay()//带有构造方法的枚举其构造方法必须用private修饰
         {
                 System.out.println("first");
         }
         private WeekDay(int date)
         {
                 System.out.println("second");
         }
}
public abstract class WeekDay1 {
private WeekDay1(){}
public final static WeekDay1 SUN=new WeekDay1(){
@Override
public WeekDay1 nextDay() {
return MON;
}
};
public final static WeekDay1 MON=new WeekDay1(){
@Override
public WeekDay1 nextDay() {
return SUN;
}
};
public abstract WeekDay1 nextDay();//带有抽象方法的枚举
public String toString(){
return this==SUN?"SUN":"MON";
}
}
枚举就相当于一个类,其中也可以定义构造方法,成员变量,普通方法和抽象方法。
枚举元素必须位于枚举体中的最开始部分,枚举元素列表后要有分号与其他成员分隔,把枚举中的成员方法或变量等放在枚举元素的前面,编译器会报错。
带构造方法的枚举:构造方法必须私有。
带方法的枚举:实现朋普通的next方法,实现抽象的next方法(每个元素分别是由枚举的子类来生成的实力对象,这些子类采用类似内部类的方式进行定义)
当枚举只有一个成员时,就可以作为一种单例的实现方式。

---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima