黑马程序员-----枚举

来源:互联网 发布:淘宝送的优酷会员在哪 编辑:程序博客网 时间:2024/06/03 15:21
 -------android培训java培训 期待与您交流! ----------

枚举简介:

枚举就是叫某个类型的变量的取值只能为若干个固定值的一个,否则编译器 就会出错。枚举可以让
编译器在编译时控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。

用普通类如何实现枚举 功能:

1. 私有的构造方法
2.每一个元素分别用一个公用的静态成员变量表示。

3.可以有若干个公邮方法,或抽象方法。 例如 nextDay()是必须是抽象的。


代码如下:

public abstract class WeekDay1 {


private WeekDay1(){

}

public static WeekDay1 SUN=new WeekDay1(){

@Override

public WeekDay1 nextDay() {

// TODO Auto-generated method stub

return MON;

}

};

public static WeekDay1 MON=new WeekDay1(){


@Override

public WeekDay1 nextDay() {

// TODO Auto-generated method stub

return SUN;

}

};

public String toString(){

if(this==SUN){

return "SUN";

}else if(this==MON){

return "MON";

}

return "";

}

public abstract WeekDay1 nextDay();

}


枚举的本质:

枚举类的values,valueOf,name,toString,ordinal等方法,枚举本质就是一种特殊的类。其中的每个元素都是该类的   一个实例对象。 例如可以调用WeekDay.SUN.getClass().getName和WeekDay.class.getName()

                     
枚举的高级应用 :
               

          枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。

 枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔。把枚举中的成员方法或变量等放在枚 举元素的前面,编译器报告错误。

枚举的构造方法必须定义为私有的,如果有多个构造方法,则在枚举元素后加(参数)的性形式指定。


  高级应用实例如下:

public enum TrafficLamp{


GREEN(45){



@Override

public TrafficLamp nextLamp() {

// TODO Auto-generated method stub

return TrafficLamp.YELLOW;

}



},YELLOW(20){



@Override

public TrafficLamp nextLamp() {

// TODO Auto-generated method stub

return this.RED;

}

},RED(10){



@Override

public TrafficLamp nextLamp() {

// TODO Auto-generated method stub

return this.GREEN;

}

};

int x;

private TrafficLamp(int x){

}

public abstract  TrafficLamp  nextLamp();

}

}

补充:

枚举只有一个成员时,就可以作为一种单例的实现方式。


 -------android培训java培训 期待与您交流! ----------


原创粉丝点击