我的理解是一旦枚举被调用,它里面的field被初始化,即构造方法被初始化,所以打印出了这些语句。
如果你有更深层的解答,或者更好的答案,求指教啊。 作者: 深井看海 时间: 2012-12-10 22:23
给你贴一段张老师的模拟枚举,你应该明白吧,其实枚举的原型也就是定义了一个不可改变的唯一的子类对象,而你所进行的操作按照我们程序所执行的顺序来讲,你一加载了类生成了对象的话,构造函数就会先去执行,而你对那星期所做的操作自然而然就执行了相对应的构造函数
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 MON;
}
};
public abstract WeekDay nextDay();
/*
public WeekDay nextDay(){
if(this == SUN){
return MON;
}else{
return SUN;
}
}
*/
public String toString(){
return this == SUN ? "SUN":"MON";
}
} 作者: 梁胜海 时间: 2012-12-10 22:34