- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
驯服Tiger之深入研究枚举类型
驯服Tiger之深入研究枚举类型?
作者:BitsCN整理 ??来源:中国网管联盟 ??点击: ??日期:2005-06-02
基础知识 在J2SE1.5中通过使用新的 enum 关键字创建指定的对象集合,您可以创建一个枚举类型。然后,可以将每个指定的值看作是那个类的一个实例,这为您提供了指定的整数集合所无法提供的编译时类型安全。清单 1 将创建一个枚举类型,并将类型安全的枚举值作为帮助器方法(helper method)的参数。该枚举类型的 values() 方法返回这种类型的不同值的有序数组。 清单 1. 枚举类型的例子 public class Loop { enum Size { Small, Medium, Large } public static void main(String args[]) { for (Size s : Size.values()) { helper(s); } } private static void helper(Size s) { System.out.println(Size value: + s); } } 构造函数、方法和变量 在使用 enum 关键字创建新的枚举类型时,实际上是在创建 java.lang.Enum 类的子类,其中,枚举类型符合通用模式 Class Enum<E extends Enum<E>>,而 E 表示枚举类型的名称。枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了每个设置的优先值。换句话说,enum Size {Small, Medium, Large} 将映射到清单 2 中所示的构造函数调用中: 清单 2. 映射的构造函数调用 new Enum<Size>(Small, 0); new Enum<Size>(Medium, 1); new Enum<Size>(Large, 2); 不必将构造函数的使用限制为间接 Enum 构造函数调用。在使用 enum 关键字时,将创建 Enum 的子类。您可以使用参数和任何别的东西为定义的每个名称添加一些您自己的构造函数调用。名称声明可以看作是对构造函数的调用,您不必添加 new 关键字。这种方法允许您将数据作为参数值传递给构造函数调用,如清单 3 所示。该参数表示 Size 对象的枚举集合的定价因子。位于枚举类型定义之后的 main() 方法演示了这种用法。 清单 3. 定制构造函数的例子 public class Sample { enum Size { Small(0.8), Medium(1.0), Large(1.2); double pricingFactor; Size(double p) { pricingFactor = p; } } public static void main(String args[]) { Size s = Size.Large; double d = s.pricingFactor; System.out.println(s + Size has pricing factor of + d); } } 运行该程序将返回给定 Size 的定价因子。您还可以定义一个类似于 getPricingFactor() 的方法,并将 pricingFactor 字段设置为 private,以便更多地将它作为类 JavaBean 的属性对待。清单 4 给前面的例子添加了一个方法: 清单 4. 方法的例子 public class Sample2 { enum Size { Small(0.8), Medium(1.0), Large(1.2); private double pricingFactor; Size(double p) { pricingFactor = p; } public double getPricingFactor() { return pricingFactor; } } public static void main(String args[]) { Size s = Size.Large; double d = s.getPricingFactor(); Sy
文档评论(0)