每一个枚举都是一个对象,可以调用不同的构造函数,类中的方法,toString方法,等…… package Text; public abstract class WeekDay1 { private WeekDay1(){}; public final static WeekDay1 SUN=new WeekDay1(){ //这是一个内部类,没有名称 ;定义一个WeekDays的子类; public WeekDay1 nextDay() { return MON; } }; public final static WeekDay1 MON=new WeekDay1(){ public WeekDay1 nextDay(){ return SUN; } }; public abstract WeekDay1 nextDay(); // public WeekDay nextDay(){ // if(this==SUM) // return MON; // else // return SUM; // } public String toString(){ return this==SUN?"SUN":"MON"; } } package Text; public class EnumTest { public static void main(String[] args){ WeekDay1 weekDay=WeekDay1.SUN; System.out.println(weekDay.toString()); WeekDay weekDay2=WeekDay.FRI; System.out.println(weekDay2.FRI); System.out.println(weekDay2.getClass().getName()); System.out.println(weekDay2.valueOf("SUN")); System.out.println(weekDay2.values().length); } private enum WeekDay{ SUN,MON,TUE,WED,THI,FRI,STA } public enum TrafficLamp{ RED(30){//调用TrafficLamp(int time)构造方法,实现nextLamp方法; 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; } } }