- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《Java 语言中 Enum 类型的使用介绍》.docx
Java 语言中Enum类型的使用介绍
华迪教育 HYPERLINK / /
Enum类型的介绍
枚举类型(Enumerated Type)很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中。而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义相似。不过相比较常量类型,枚举类型可以为申明的变量提供更大的取值范围。
举个例子来说明一下,如果希望为彩虹描绘出七种颜色,你可以在 Java 程序中通过常量定义方式来实现。
清单 1. 常量定义
Public static class RainbowColor {
// 红橙黄绿青蓝紫七种颜色的常量定义
public static final int RED = 0;
public static final int ORANGE = 1;
public static final int YELLOW = 2;
public static final int GREEN = 3;
public static final int CYAN = 4;
public static final int BLUE = 5;
public static final int PURPLE = 6;
}
使用的时候,你可以在程序中直接引用这些常量。但是,这种方式还是存在着一些问题。
1、类型不安全
由于颜色常量的对应值是整数形,所以程序执行过程中很有可能给颜色变量传入一个任意的整数值,导致出现错误。
2、没有命名空间
由于颜色常量只是类的属性,当你使用的时候不得不通过类来访问。
3、一致性差
因为整形枚举属于编译期常量,所以编译过程完成后,所有客户端和服务器端引用的地方,会直接将整数值写入。这样,当你修改旧的枚举整数值后或者增加新的枚举值后,所有引用地方代码都需要重新编译,否则运行时刻就会出现错误。
4、类型无指意性
由于颜色枚举值仅仅是一些无任何含义的整数值,如果在运行期调试时候,你就会发现日志中有很多魔术数字,但除了程序员本身,其他人很难明白其奥秘。
如何定义Enum类型
为了改进 Java 语言在这方面的不足弥补缺陷,5.0 版本 SDK 发布时候,在语言层面上增加了枚举类型。枚举类型的定义也非常的简单,用enum关键字加上名称和大括号包含起来的枚举值体即可,例如上面提到的彩虹颜色就可以用新的enum方式来重新定义:
enumRainbowColor { RED, ORANGE, YELLOW, GREEN, CYAN, BLUE, PURPLE }
从上面的定义形式来看,似乎 Java 中的枚举类型很简单,但实际上 Java 语言规范赋予枚举类型的功能非常的强大,它不仅是简单地将整形数值转换成对象,而是将枚举类型定义转变成一个完整功能的类定义。这种类型定义的扩展允许开发者给枚举类型增加任何方法和属性,也可以实现任意的接口。另外,Java 平台也为Enum类型提供了高质量的实现,比如默认实现 Comparable 和Serializable接口,让开发者一般情况下不用关心这些细节。
回到本文的主题上来,引入枚举类型到底能够给我们开发带来什么样好处呢?一个最直接的益处就是扩大 switch 语句使用范围。5.0 之前,Java 中 switch 的值只能够是简单类型,比如int、long、char, 有了枚举类型之后,就可以使用对象了。这样一来,程序的控制选择就变得更加的方便,看下面的例子:
清单 2. 定义Enum类型
// 定义一周七天的枚举类型
publicenumWeekDayEnum { Mon, Tue, Wed, Thu, Fri, Sat, Sun }
// 读取当天的信息
WeekDayEnum today = readToday();
// 根据日期来选择进行活动
switch(today) {
Mon: do something; break;
Tue: do something; break;
Wed: do something; break;
Thu: do something; break;
Fri: do something; break;
Sat: play sports game; break;
Sun: have a rest; break;
}
对于这些枚举的日期,JVM 都会在运行期构造成出一个简单的对象实例一一对应。这些对象都有唯一的 identity,类似整形数值一样,switch 语句就根据此来进行执行跳转。
如何定制Enum类型
除了以上这种最常见的枚举定义形式外,如果需要给枚举类型增加一些复杂功能,也可以通过类
您可能关注的文档
- 《GB7000.5道路与街道照明灯具》.pdf
- 《GB7002-2016T 投光照明灯具光度测试》.pdf
- 《GBT 23595.3-2016 白光LED灯用稀土黄色荧光粉试验方法 第3部分:色品坐标的测定》.pdf
- 《GBT 23595.4-2016 白光LED灯用稀土黄色荧光粉试验方法 第4部分:热稳定性的测定》.pdf
- 《GBT 23595.6-2016 白光LED灯用稀土黄色荧光粉试验方法 第6部分:电导率的测定》.pdf
- 《GB_24823-2016普通照明用LED性能要求》.pdf
- 《GB_T24907-2016-道路照明用LED灯性能要求》.ppt
- 《gearbox》.pdf
- 《General questions about lean operations》.docx
- 《Generation of 11.5 W coherent red-light by》.pdf
- 汽车行业月报:行业整体表现强劲,自主品牌占比持续提升.docx
- 汽车行业AI赋能智能驾驶系列:我们怎么看高阶智驾体验拐点?.docx
- pelvic inflammatory disease multimodality imaging approach with clinical-pathologic correlation骨盆炎症疾病Multimodality成像方法与临床病理相关性.pdf
- 级专升本语文灯下漫笔.pptx
- 材料成型工艺学上fffff11.pptx
- 水细菌学检验检测.pptx
- 上午六位复杂环境下视觉同时.pptx
- 英语早读基础写作活动安排.pptx
- 你叫什么名字很高兴认识吗不回顾了他1 unit1my names gina section grammar focus-3c课件共.pdf
- 产-英菲尼迪维修信息系统.pdf
最近下载
- 机械测量培训课程.pptx
- 医疗器械安全有效基本要求清单填写参考模板2024年.docx
- 人教版(2024)数学一年级下册四 100以内的口算加、减法 练习.pptx
- 电气装置安装工程质量检验及评定规程DLT5161 2018.doc
- 做好客舱清洁前准备课件讲解.pptx
- 铁道信号论文-信号机维护与故障处理.doc
- ISO13485质量手册+全套程序文件.docx VIP
- 汽车机械维修工(高级技师)职业鉴定考试题库资料(高频300题).pdf
- 多维视角下梧州市普通高中体育生学训现状剖析与发展路径探索.docx
- 江南事业编招聘考试题历年公共基础知识真题汇总-综合应用能力(2010-2021.pdf VIP
文档评论(0)