---------------------- Android培训、java培训、期待与您交流! ----------------------
枚举:
java1.5后加回了c语言的枚举功能。
枚举就是让某个类型的变量的取值只能为若干个固定值中的一个,否则编译器会报错。
枚举可以在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
使用java普通类可以模拟枚举的功能,易于理解java的枚举。代码如下:
public class WeekDay{
private WeekDay(){}
public final static WeekDay SUN = new WeekDay();
public final static WeekDay MON = new WeekDay();
public WeekDay nextDay(){
if(this==SUN){
return MON;
}
if(this==MON){
return SUN;
}
}
public String toString(){
return this==SUN?"SUN":"MON";
}
}
采用抽象方法设计思想优化:--->
public abstract class WeekDay{
private WeekDay(){}
public final static WeekDay SUN = new WeekDay(){
public WeekDay nextDay(){
return MON;
}
};
public final static WeekDay MON = new WeekDay(){
public WeekDay nextDay(){
return SUN;
}
};
public abstract WeekDay nextDay();
public String toString(){
return this==SUN?"SUN":"MON";
}
}
要点:
1,私有构造方法。
2,每个元素分别用一个公有的静态成员变量表示。
3,可以有若干公有方法或抽象方法。例如采用抽象方法定义nextDay()就将大量的if、else语句转移成了一个个独立类。
java中的枚举类(enum):
public enum WeekDay{
SUN(1),MON(),TUE,WED,THI,FRI,SAT;
private WeekDay(){System.out.println("first");}
private WeekDay(int day){System.out.println("second");}
}
/*
1,构造方法必须放在元素列表下面。
2,元素胡加上小括号表示用枚举的有参方法。
*/
枚举类的常用方法:
String name()
int ordina()
静态方法:
valueOf(String arg0) 返回:枚举类型
values() 返回:枚举类型数组(用于遍历很嗨)
枚举类描述交通灯:
public enum TrafficLamp{
RED(30){
public TrafficLamp nextLamp(){
return GREEN;
}
},
GREEN(45){
public TrafficLamp nextLamp(){
return YELLOW;
}
},
YELLOW(5){
public TrafficLamp nextLamp(){
return RED;
}
};
public abstract TrafficLamp();
private int time;
public TrafficLamp(int time){this.time = time}
}
---------------------- Android培训S、java培训、期待与您交流! ----------------------