黑马程序员技术交流社区

标题: 枚举的代码问题?望大神解答 [打印本页]

作者: 腹黑生姜    时间: 2015-6-27 17:56
标题: 枚举的代码问题?望大神解答
这是枚举的代码
public class EnumDemo2
{
        enum Weekday
                {
                SUN(5), MON(), TUE, WED, THU, FRI, SAT;
                private Weekday()
                        {
                        System.out.println(this.name());
                    }

                private Weekday(int day)
                        {
                        System.out.println(day);
                    }
            }

        public static void main(String[] args)
                {
                Weekday sun=Weekday.SUN;
                System.out.println(sun.name());
            }
}

------------------------------------------------------------
Weekday.SUN;具体是什么意思?望大神解答!
作者: hhqnmlgb    时间: 2015-6-27 19:25
本帖最后由 hhqnmlgb 于 2015-6-27 19:54 编辑

其实枚举也是用普通类实现的
它会自动私有化构造函数
字段都是:public static 枚举的类型 = new 类型();
  1. enum Weekday
  2. {
  3.         SUN, MON, TUE, WED, THU, FRI, SAT;
  4. }
  5. //上面的枚举可以看成这样一个类:
  6. class Week
  7. {
  8.         private Week(){}
  9.         public static Week SUN=new Week();
  10.         public static Week MON=new Week();
  11.         public static Week TUE=new Week();
  12.         public static Week WED=new Week();
  13.         public static Week THU=new Week();
  14.         public static Week FRI=new Week();
  15.         public static Week SAT=new Week();
  16. }
复制代码

Weekday.SUN;就是Weekday型的一个静态字段
稍复杂的枚举:
  1. enum Weekday
  2. {
  3.         SUN(0), MON(1), TUE, WED, THU, FRI, SAT;//通过"()"来传参数指定用哪个构造方法
  4.         private int day;
  5.         private Weekday(){}
  6.         private Weekday(int day)
  7.         {
  8.                 this.day=day;
  9.         }
  10.         public int getDay()
  11.         {
  12.                 return day;
  13.         }
  14. }
  15. //上面的枚举可以看成这样一个类:
  16. class Week
  17. {
  18.         private int day;
  19.         private Week(){}
  20.         private Week(int day)
  21.         {
  22.                 this.day=day;
  23.         }
  24.         public static Week SUN=new Week(0);
  25.         public static Week MON=new Week(1);
  26.         public static Week TUE=new Week();
  27.         public static Week WED=new Week();
  28.         public static Week THU=new Week();
  29.         public static Week FRI=new Week();
  30.         public static Week SAT=new Week();
  31.         
  32.         public int getDay()
  33.         {
  34.                 return day;
  35.         }
  36. }
复制代码












欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2