java中的枚举20111206

java中的枚举20111206

ID:37861120

大小:57.50 KB

页数:8页

时间:2019-06-01

java中的枚举20111206_第1页
java中的枚举20111206_第2页
java中的枚举20111206_第3页
java中的枚举20111206_第4页
java中的枚举20111206_第5页
资源描述:

《java中的枚举20111206》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Java中的枚举Tiger(JDK版本号)中的一个重要新特性是枚举构造,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示。Tiger专家、developerWorks的多产作者。下面将解释枚举的定义,介绍如何在应用程序中运用枚举,以及它为什么能够让您抛弃所有旧的publicstaticfinal代码。您已经知道,Java代码的两个基本的构造块是类和接口。现在Tiger又引入了枚举,一般简称它为enum。这个新类型允许您表示特定的数据点,这些数据点只接受分配时预先定义的值集合。 枚举是允许用常量来表示特定

2、的数据片断,而且全部都以类型安全的形式来表示,它使用“enum”关键字来定义。    我们先来写一个简单的枚举类型的定义:查看复制到剪切板打印1.public enum WeekDay{  2.MONDAY, TUESDAY, WENSDAY, THURSDAY, FRIDAY; //最后这个“;”可写可不写。  3.}  publicenumWeekDay{MONDAY,TUESDAY,WENSDAY,THURSDAY,FRIDAY;//最后这个“;”可写可不写。}    这和类、接口的定义很相像嘛!Tiger中的枚举类型就是一种使用

3、特殊语法“enum”定义的类。所有的枚举类型是java.lang.Enum的子类。这是Tiger中新引入的一个类,它本身并不是枚举类型,但它定义了所有枚举类型所共有的行为,具体的行为属性可以查看JDK文档。注意:虽然所有的枚举类型都继承自java.lang.Enum,但是你不能绕过关键字“enum”而使用直接继承Enum的方式来定义枚举类型。编译器会提示错误来阻止你这么做。    WeekDay中定义的五个枚举常量之间使用“,”分割开来。这些常量默认都是“publicstaticfinal”的,所以你就不必再为它们加上“publicst

4、aticfinal”修饰(编译器会提示出错),这也是为什么枚举常量采用大写字母来命名的原因。而且每一个常量都是枚举类型WeekDay的一个实例。你可以通过类似“WeekDay.MONDAY”这种格式来获取到WeekDay中定义的枚举常量,也可以采用类似“WeekDayoneDay=WeekDay.MONDAY”的方式为枚举类型变量赋值(你不能给枚举类型变量分配除了枚举常量和null以外的值,编译器会提示出错)。    作为枚举类型实例的枚举常量是如何初始化的呢?其实答案很简单,这些枚举常量都是通过Enum中定义的构造函数进行初始化的。1

5、.// java.lang.Enum中定义的构造函数,  2.// 两个参数分别是定义的枚举常量名称以及它所在的次序。  3.protected Enum(String name, int ordinal) {  4.  5.  this.name = name;  6.  7.  this.ordinal = ordinal;  1.  2.}  //java.lang.Enum中定义的构造函数,//两个参数分别是定义的枚举常量名称以及它所在的次序。protectedEnum(Stringname,intordinal){this.n

6、ame=name;this.ordinal=ordinal;}    在初始化的过程中,枚举常量的次序是按照声明的顺序安排的。第一个枚举常量的次序是0,依此累加。    枚举类型除了拥有Enum提供的方法以外,还存在着两个隐藏着的与具体枚举类型相关的静态方法——values()和valueOf(Stringarg0)。方法values()可以获得包含所有枚举常量的数组;方法valueOf是java.lang.Enum中方法valueOf的简化版本,你可以通过它,根据传递的名称来得到当前枚举类型中匹配的枚举常量。当然,熟练的程序员可以用静

7、态常量实现这项功能,如清单1所示:清单1.publicstaticfinal的常量publicclassOldGrade{ publicstaticfinalintA=1; publicstaticfinalintB=2; publicstaticfinalintC=3; publicstaticfinalintD=4; publicstaticfinalintF=5; publicstaticfinalintINCOMPLETE=6;} 然后您就可以让类接受像OldGrade.B这样的常量,但是在这样做的时候,请记住这类常量是Java

8、中int类型的常量,这意味着该方法可以接受任何int类型的值,即使它和OldGrade中定义的所有级别都不对应。因此,您需要检测上界和下界,在出现无效值的时候,可能还要包含一个IllegalArgument

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

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

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