-
枚举类型:
原理:
publicabstract class WeekDay{
privateWeekDay(){};
publicfinal static WeekDay SUN = new WeekDay(){
publicWeekDay nextDay(){
returnMON
}
}
publicfinal static WeekDay MON = new WeekDay(){
publicWeekDay nextDay(){
returnSUN
}
}
publicString toString(){
returnthis == SUN?"sun":"mon"
}
}
publicstatic void main(String[]args){
WeekDayweekday = WeekDay.SUN;
syso(weekday.nextDay());
}
具体应用:
publicstatic void main(String[]args){
WeedDayweedDay = WeeKDay.SUN;
syso(weekDay);
syso(WeedDay.valueOf("SUN"));
WeekDay[]w = WeekDay.values();
}
publicenum WeekDay{
SUN(1),MON(),TUE,WED,THI,FRI,SAT
privateWeekDay(){syso(1)};
privateWeekDay(int day){syso(2)};
}
带有抽象方法的枚举(交通灯)
publicenum TrafficLamp{
继承了TrafficLamp的匿名类对象,
必须实现父类的抽象方法。然后作为类的属性程序
RED(21){//在匿名类对象传参,会调用父类的带参数的构造方法
public TrafficLamp nextLamp(){
returnGREEN;
}
},
GREEN(30){
public TrafficLamp nextLamp(){
retrunYELLOW
}
},
YELLOW(5){
public TrafficLamp nextLamp(){
returnRED;
}
};
publicabstract TrafficLamp nextLamp();
}
publicstatic void main(String[]args){
TrafficLamplamp = TrafficLamp.RED;
syso(lamp.nextLamp());
privateint time;
privateTrafficLamp(int time){this.time = time;}
}