java中的枚举20111206.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java中的枚举20111206

Java中的枚举 Tiger (JDK版本号)中的一个重要新特性是枚举构造,它是一种新的类型,允许用常量来表示特定的数据 片断,而且全部都以类型安全的形式来表示。Tiger 专家、developerWorks 的多产作者 下面将解释枚举的定义,介绍如何在应用程序中运用枚举,以及它为什么能够让您抛弃所有旧的 public static final 代码。 您已经知道,Java 代码的两个基本的构造块是类 和接口。现在 Tiger 又引入了枚举,一 般简称它为 enum。这个新类型允许您表示特定的数据点,这些数据点只接受分配时预先定 义的值集合。?枚举是允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示,它使用“enum”关键字来定义。 ????我们先来写一个简单的枚举类型的定义: 查看复制到剪切板打印 public?enum?WeekDay{ ?? MONDAY,?TUESDAY,?WENSDAY,?THURSDAY,?FRIDAY;?//最后这个“;”可写可不写。 ?? }?? public enum WeekDay{ MONDAY, TUESDAY, WENSDAY, THURSDAY, FRIDAY; //最后这个“;”可写可不写。 } ????这和类、接口的定义很相像嘛!Tiger中的枚举类型就是一种使用特殊语法“enum”定义的类。所有的枚举类型是java.lang.Enum的子类。这是Tiger中新引入的一个类,它本身并不是枚举类型,但它定义了所有枚举类型所共有的行为, 注意:虽然所有的枚举类型都继承自java.lang.Enum,但是你不能绕过关键字“enum”而使用直接继承Enum的方式来定义枚举类型。编译器会提示错误来阻止你这么做。 ????WeekDay中定义的五个枚举常量之间使用“,”分割开来。这些常量默认都是“public static final”的,所以你就不必再为它们加上“public static final”修饰(编译器会提示出错),这也是为什么枚举常量采用大写字母来命名的原因。而且每一个常量都是枚举类型WeekDay的一个实例。你可以通过类似“WeekDay.MONDAY”这种格式来获取到WeekDay中定义的枚举常量,也可以采用类似“WeekDay oneDay = WeekDay.MONDAY”的方式为枚举类型变量赋值(你不能给枚举类型变量分配除了枚举常量和null以外的值,编译器会提示出错)。 ????作为枚举类型实例的枚举常量是如何初始化的呢?其实答案很简单,这些枚举常量都是通过Enum中定义的构造函数进行初始化的。 //?java.lang.Enum中定义的构造函数, ?? //?两个参数分别是定义的枚举常量名称以及它所在的次序。 ?? protected?Enum(String?name,?int?ordinal)?{ ?? ?? ???=?name; ?? ?? ??this.ordinal?=?ordinal; ?? ?? }?? // java.lang.Enum中定义的构造函数, // 两个参数分别是定义的枚举常量名称以及它所在的次序。 protected Enum(String name, int ordinal) { = name; this.ordinal = ordinal; } ????在初始化的过程中,枚举常量的次序是按照声明的顺序安排的。第一个枚举常量的次序是0,依此累加。 ????枚举类型除了拥有Enum提供的方法以外,还存在着两个隐藏着的与具体枚举类型相关的静态方法——values()和valueOf(String arg0)。方法values()可以获得包含所有枚举常量的数组;方法valueOf是java.lang.Enum中方法valueOf的简化版本,你可以通过它,根据传递的名称来得到当前枚举类型中匹配的枚举常量。当然,熟练的程序员可以用静态常量实现这项功能,如清单 1 所示: 清单 1. public static final 的常量 public class OldGrade { ? public static final int A = 1; ? public static final int B = 2; ? public static final int C = 3; ? public static final int D = 4; ? public static final int F = 5; ? public static final int INCOMPLETE = 6; } ?然后您就可以让类接受像 OldGrade.B 这样的常量

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档