枚举的基本应用:
举例:定义一个Weekday的枚举
package cn.itcast.day1;
public class EnumTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//MON是一个对象,是WeekDay类型的。
WeekDay1 weekDay = WeekDay1.MON;
System.out.println(weekDay.nextDay());
//这个FRI是一个对象。
WeekDay weekDay2 = WeekDay.FRI;
System.out.println(weekDay2);
System.out.println(weekDay2.name());
//排行几
System.out.println(weekDay2.ordinal());
System.out.println(weekDay2.getClass());
System.out.println(WeekDay.valueOf("SUN"));
System.out.println(WeekDay.values().length);
}
//定义了一个枚举,枚举相当一个类,
public enum WeekDay{
//这个里面的元素相当与一个实例对象
SUN,MON,TUE,WED,THI,FRI,SAT;
}
}
扩展:枚举类的valuse,valueOf,name,toString,ordinal等方法
总结:枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象。
实现带有构造方法的枚举:
private WeekDay(){System.out.println("first");}
private WeekDay(int day){System.out.println("second");}
要调用它就在元素的后面加上参数。
实现带有抽象方法的枚举:
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 nextLamp();
private int time;
private Trafficlamp(int time){this.time = time;}
}