public class WeekDay1 {
public static void main(String[] args) {
WeekDay weekday = WeekDay.FRI;
//元素初始化一次,第二次不执行构造方法(可以用于实现单例)
WeekDay weekday2 = WeekDay.MON;
System.out.println(weekday.name()); //FRI
System.out.println(weekday.ordinal()); //5
System.out.println(weekday.valueOf("SUN").toString()); //SUN
System.out.println(WeekDay.values().length); //7
// 遍历枚举类所有元素
for(WeekDay w:WeekDay.values()){
System.out.println(w.name());
}
}
//枚举类相当于一个类
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");
}
}
/*
* 实现抽象的getNextLamp方法:每个元素分别是由枚举类的子类来生成的实例对象,
* 这些子类采用类似内部类的方式进行定义。
*/
public enum TrafficLamp{
RED(30){
@Override
public TrafficLamp getNextLamp() {
// TODO Auto-generated method stub
return GREEN;
}
},GREEN(45) {
@Override
public TrafficLamp getNextLamp() {
// TODO Auto-generated method stub
return YELLOW;
}
},YELLOW(5) {
@Override
public TrafficLamp getNextLamp() {
// TODO Auto-generated method stub
return RED;
}
};
private int time;
private TrafficLamp(int time){
this.time = time ;
}
public abstract TrafficLamp getNextLamp();
}
}