黑马程序员技术交流社区
标题:
关于枚举的执行
[打印本页]
作者:
深知一生短暂
时间:
2013-9-10 13:25
标题:
关于枚举的执行
本帖最后由 深知一生短暂 于 2013-9-10 15:26 编辑
public static void main(String[] args) {
// TODO Auto-generated method stub
//System.out.println("who's your daddy?");
WeekDay weekDay2=WeekDay.FRI;
System.out.println(weekDay2);
/* System.out.println(weekDay2.name());
System.out.println(weekDay2.ordinal());
System.out.println(WeekDay.valueOf("SUN"));
System.out.println(WeekDay.values().length);
*/}
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");}
}
运行结果:
second
first
first
first
first
first
first
FRI
这让我很头痛,为什么有那么多个first
作者:
静以修身
时间:
2013-9-10 13:43
这个应该是枚举固定了的规则吧。当你给枚举类型的一个变量初始化的时候,它就会先去初始化枚举类型中的所有元素,根据元素的形式调用相应的构造函数进行初始化。
WeekDay weekDay2=WeekDay.FRI;
在这句的时候它会将枚举内所有的元素进行初始化,是固定的规则吧!!
作者:
早知道
时间:
2013-9-10 15:19
这是因为枚举里面有七个实例 进行初始化的时候会调用构造器 像MON,TUE,WED,THI,FRI,SAT调用的是private WeekDay()这个无参构造器,所以有6个first
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2