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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马杨锦喜 中级黑马   /  2012-9-21 01:23  /  1475 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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;
        }
*/




4 个回复

倒序浏览
本帖最后由 皮卫凯 于 2012-9-21 01:44 编辑

  private String value;
        private WeekDay(String value){
                this.value=value;
        }
        public String getValue(){
                return this.value;
        }

这个是自定义类的对象时 必须做的 set 、get方法。

对于enum枚举 可以分开理解:

MON,TUE,WED                         // 这就是你所枚举的WeekDay的三个元素!!

MON{},TUE{},WED{}             // 理解为子类对象更好,其实内部类就是子类对象

MON("mon"){},TUE("tue"){},WED("wed"){}   //因为是子类对象,对象初始化的时候可以有参数。所以可以是 MON("mon" ){ }        //而且,这些都是枚举的特点,就是这个枚举的格式。

可以把enum看做是一个类,但是要注意的是enum 不能使用 extends 关键字继承其他类,因为 enum 经继承了 java.lang.Enum(java是单一继承)。
回复 使用道具 举报
枚举,你可以理解为类;只不过他们对象是固定的,类的对象是随便new的。里面的属性、方法、构造方法,像类中的理解就可以了。
回复 使用道具 举报
我的理解,枚举,类,就是他有对象,但它最特别的就是把每一个成员它能当做“单列的设计模式”来实现,这也是它最牛的地方。
让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器报错,这也就是普通变量无法做到的。

一楼说的那个Get()和Set()方法不是必须得些,得看需求的,这就是在java中的读写,只读,只写就这几种模式。
回复 使用道具 举报
皮卫凯 发表于 2012-9-21 01:31
private String value;
        private WeekDay(String value){
                this.value=value;

我现在只是明白了,很还不算是很清楚其中道理 ,我再慢慢学习看看,是否能彻底掌握吧,谢谢啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马