Java枚举类型详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java 枚举类型详解
(Enumeration Programming)
Version1.0
编写 时间 QQ
汪文君 2012/2/26 53250i0648
目录
1 课程大纲 .......................................................................................................................... 2 2 枚举的基本概念............................................................................................................... 3 2.1 需求简述.................................................................................................................. 3 2.2 程序简单实现 .......................................................................................................... 3 2.3 异常机制告知调用者参数错误 ............................................................................... 4 2.4 自定义类约定参数类型........................................................................................... 6 2.5 枚举类型进一步优化 .............................................................................................. 9 3 枚举的构造函数,方法,以及字段 ............................................................................ 10 3.1 应用场景................................................................................................................ 10 3.2 实现需求................................................................................................................ 10 3.3 详解 ....................................................................................................................... 11 4 枚举的抽象方法 ........................................................................................................... 11 4.1 应用场景................................................................................................................ 11 4.2 实现需求................................................................................................................ 11 4.3 详解 ....................................................................................................................... 13 5 枚举类型的查缺补漏 ................................................................................................... 13 5.1 枚举类型可以实现接口或者集成抽象类 .............................................................. 13 5.2 枚举类型的其他 API 详解 ..................................................................................... 13 5.2.1 name 方法讲解 ............................................................................................... 14 5.2.2 ordinal 方法讲解 ............................................................................................. 14 5.2.3 valueOf 方法讲解 ............................................................................................ 14 5.2.4 Values 方法 ..................................................................................................... 15 6 总结 .............................................................................................................................. 15 7 其他资料扩展............................................................................................................... 16
2.3 异常机制告知调用者参数错误
为了通知调用者到底发生了那些事情, 我们经常使用异常的机制来解决上述问题, 当然 异常的方式也不失为一个比较不错的解决方案,好了,我们就写一个自定义异常,并且进行 一下方法的重构 首先定义一个异常类,代码片段如下所示,该类基本上没有做任何东西,只不过是告知 调用者需要捕获这样的 Exception package com.wenhuisoft.chapter1; /** * 当颜色参数出现错误的时候将会抛出这个异常 * @author wangwenjun * @date 2012-02-26 */ public class ColorTypeException extends Exception { private static final long serialVersionUID = -1697690932127197369L; private String message; public ColorTypeException() { super(); } public ColorTypeException(String message) {
1 课程大纲
在本教程中您将学会如下一些知识点
1、 什么是枚举,如何定义枚举; 2、 枚举的构造函数和字段; 3、 带有抽象方法的枚举; 4、 枚举的常用方法; 5、 如何使用枚举提高程序的容错能力;
2 枚举的基本概念
熟悉 C/C++的人应该知道枚举这一个概念,他的大概意思就是说某一个参数在运行时期 是有固定的选项,C/C++在最初就支持这样的语法,并且从实践看来,枚举类型的确带来了 很多便利和程序的安全,相比较 C/C++而言,Java 在 5.0 版本才开始支持枚举这一特性,如 果我们回到 5.0 版本之前,我们想实现这样的功能应该如何进行设计呢? 既然有需求,那么就必须要有场景,为了能更好的引出枚举类型这一特性,我们暂时设 定一个需求,采用 JDK5.0 以前的版本进行实现
System.out.println("输入黄色"); break; default: System.out.println("未知颜色!"); } } 上述代码虽然完成了我们的基本要求, 但是当传入其它值的时候我们并不能做任何事情, 比如 color 传入了 4 或者其他,调用者根本不知道发生了什么,如上没有什么容错性和安全性可言, 为了能通知和规范调 用者我们有义务告诉他发生了那些事情;
super(message); } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } 好了,我们重构后的代码如下,在进行颜色判断的时候发现如果不是我们规定的值,那 么我们将毫不犹豫的抛出一个异常来告知调用者 package com.wenhuisoft.chapter1; public class WithOutEnum { public void printColor(int color) throws ColorTypeException { switch(color) { case 1: System.out.println("输入红色"); break; case 2: System.out.println("输入蓝色"); break; case 3: System.out.println("输入黄色"); break; default: throw new ColorTypeException("未知颜色!"); } } public static void main(String[] args) { WithOutEnum withoutEnum = new WithOutEnum(); try
2.1 需求简述
假设有一个方法, 入参为表示颜色的数字或者字符串, 我们只针对特定的颜色执行一定 的程序逻辑,要求 1:表示红色;2:表示蓝色;3 表示黄色,我们和调用我们接口的另一端 程序做个约定,让他只能填入(1,2,3)几个值;
2.2 程序简单实现
public void printColor(int color) { switch(color) { case 1: System.out.println("输入红色"); break; case 2: System.out.println("输入蓝色"); break; case 3:
{ withoutEnum.printColor(1); withoutEnum.printColor(2); withoutEnum.printColor(3); withoutEnum.printColor(4); } catch (ColorTypeException e) { System.out.println(e.getMessage()); } } } 通过客户端的代码我们不难发现,我们可以很好的得知系统内部到底出现了什么问题, 从而定位到我们的入参填写有问题;这样我们的系统有距离理想中的需求更加接近了一步, 但是我们不妨做一个这样的思考,printColor 这样单纯的方法,在内部还要帮我们做一些入 参的校验和判断, 如此一来他本身又多了额外的一笔开销, 那么我们怎样在入参的源头就进 行一下控制, 压根就不让不符合规范的参数传递进来, 也就是在编译阶段就不能传递进来不 能通过语法检测,这样就可以在程序运行时,减少不不小的开销;
相关文档
最新文档