黑马程序员技术交流社区

标题: 枚举不大熟悉的说 [打印本页]

作者: 黑马杨锦喜    时间: 2012-9-25 21:12
标题: 枚举不大熟悉的说
多谢各位的鼎力支持与帮助,此问题的回帖在某个程度上解决了我的问题,如果以后遇到新的此类问题,我会继续加强的。

import org.junit.Test;

public class DemoWeek {

        @Test
        public void test(){
                print(WeekDay.THU);
        }
        
        public void print(WeekDay w){
                String value=w.localValue();
                System.out.println(value);
                String str=w.getValue();
                System.out.println("参数:"+str);
        }
}
enum WeekDay{
        MON("mon"){
                public String localValue(){
                        return "星期一";
                }
        }
        ,TUE("tue"){
                public String localValue(){
                        return "星期二";
                }
        }
        ,WED("wed"){
                public String localValue(){
                        return "星期三";
                }
        }
        ,THU("thu"){
                public String localValue(){
                        return "星期四";
                }
        };
        
        private String value;
        private WeekDay(String value){
                this.value=value;
        }
        public String getValue(){
                return this.value;
        }
        public abstract String localValue();
}
我想问的是最后这几句,具体是怎么实现我们所需的功能的?对枚举不大熟悉的说,很困惑这种形式?这难道是构造函数或者方法么?
/*
       private String value;
        private WeekDay(String value){
                this.value=value;
        }
        public String getValue(){
                return this.value;
        }
*/

作者: 黑马张旭明    时间: 2012-9-25 21:45
private String value;
        private WeekDay(String value){
                this.value=value;
        }
        public String getValue(){
                return this.value;
        }
enum WeekDay是一个类,上面这些都是类的成员,private String value;是成员变量,private WeekDay(String value)public String getValue()是这个类的成员函数,其中前一个是类构造函数,而前面那些MON,TUE,WED等是这个类的一个静态常量,指向这个类的一个对象,可以说这些就是类的对象。后面不难解释MON("mon")后面有括号就是调用了private WeekDay(String value){ this.value=value;}将"mon"赋值给成员变量value,注意的是这些MON,TUE,WED每个都是一个WeekDay对象,都有自己的value值和构造方法等成员。
         public void test(){
                print(WeekDay.THU);                           //参数是成员变量THU(THU是WeekDay的一个对象)
        }
        
        public void print(WeekDay w){                     
                String value=w.localValue();                 //显然这里调用了THU的localValue()方法返回的是"星期四"。
                System.out.println(value);
                String str=w.getValue();                      //这里调用的是THU的getValue()方法返回的是"thu"。
                System.out.println("参数:"+str);







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