A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 深知一生短暂 中级黑马   /  2013-9-10 13:25  /  1362 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 深知一生短暂 于 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

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

2 个回复

倒序浏览
这个应该是枚举固定了的规则吧。当你给枚举类型的一个变量初始化的时候,它就会先去初始化枚举类型中的所有元素,根据元素的形式调用相应的构造函数进行初始化。
WeekDay weekDay2=WeekDay.FRI;
在这句的时候它会将枚举内所有的元素进行初始化,是固定的规则吧!!
回复 使用道具 举报
这是因为枚举里面有七个实例 进行初始化的时候会调用构造器 像MON,TUE,WED,THI,FRI,SAT调用的是private WeekDay()这个无参构造器,所以有6个first
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马