枚举的最深刻剖析

枚举的最深刻剖析

ID:42447337

大小:64.50 KB

页数:5页

时间:2019-09-15

枚举的最深刻剖析_第1页
枚举的最深刻剖析_第2页
枚举的最深刻剖析_第3页
枚举的最深刻剖析_第4页
枚举的最深刻剖析_第5页
资源描述:

《枚举的最深刻剖析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、1•枚举类型是一种取值被严格限定在一个有限的集合中的变量类型。2.jav且中的枚举是一种特殊的类。每一个枚举都会被编译成一个class文件。3.枚举主要用于限定变量的取值,从而从根源上有效的避免了非法的赋值。4・声明一个枚举:publicenumSex{MALE.FEMALE}可以声明在一个类的内部,也可以声明在一个单独的文件里。若声明在一个类的内部,则会被编译为:类名$Sex.class。证明这时©num是以内部类的形式存在。相信很多人不明白MALE,FEMALE到底是什么类型。请看这句代码:Sexsex=Sex.MALE;只有相同类型才可以赋值。枚举是一种特殊的类,那么

2、sex就是一个类的引用,那么MALE必定也是一个类的引用。Sex・FEMALE・name();只有类才可以调用方法。这句代码进一步证明了这一点。所以在声明一个enum的时候只需要指定引用变量的名字,系统就会自动创建对彖,并把地址返回给应用变量。5・卜•面我们来模拟enumpackagecom.jnmc・Enum;publicclassWeekday{//构造方法必须私有//保证其他任何类都不能创建Weekday的实例privateWeekday(){}privateStringvalue=null;//在静态初始化的时候创建对象//引用必须是共有的静态的publicstat

3、icWeekdaySUN=publicstaticWeekdayMON=publicstaticWeekdayTUE=publicstaticWeekdayWED=publicstaticWeekdayTHU=getInstance("SUN,)getInstance(”MON”)getInstance(”TUE”)getInstance("WED”)getInstance)publicstaticWeekdayFRI=getInstance;publicstaticWeekdaySAT=getInstance;privatestaticWeekdaygetlnstance

4、(Stringday){Weekdayd=newWeekday();d.value=day;returnd;}QOverridepublicStringtoString(){returnvalue;}}然后我们就可以使用它了,使用起来和Enum没有什么区别。Weekdayweekday=Weekday.SUN;而且weekday的取值只有通过Weekday的静态引用获得,而不能被我们随便定义。实际上,enum就是用类似的方法实现的。6•使用有参构造方法创建enum需注意:关于取值的定义必须放在enum体的开头publicenumColor{//创建Color实例时会默认调用

5、无参的构造方法//RED(3)调用了有参数的构造方法//以下代码必须放在enum体的最开头RED(3).YELLOW,BLUE;//若之后还有内容,应为//注意构造方法只允许声明为私有的privateColor(){System.ou七.printIn("construetorwithoutparameters”);}privateColor(inti){System.out-printIn(nconstructorwithoneintegerparameter");}}7•抽象的enum在enum体屮声明了抽象方法,就将一个enum声明为一个抽象枚举了。这个enum就没法

6、实例化,必须通过子类来实例化。publicenumWeekday{SUN(l){//用匿名内部类创建实例QOverridepublicWeekdaynextday(){returnMON;///这里更进-步说明了,MON是Weekday类型的引用}},///两个枚举的取值之间用1z1MON{QOverridepublicWeekdaynextday(){returnTUE;}},TUE{QOverridepublicWeekdaynextday(){returnWED;}},WED{QOverridepublicWeekdaynextday(){returnTHUR;}},

7、THUR{QOverridepublicWeekdaynextday(){returnFRI;}FRI{@OverridepublicWeekdaynextday(){returnSAT;}},SAT{QOverridepublicWeekdaynextday(){returnMON;}};///最后一个用r///定义了一个抽象方法,//则在创建Weekday的时候就必须实现该抽象方法publicabstractWeekdaynextday();privateWeekday(){}privateWeekday(in

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。