快速业务通道

驯服Tiger: 深入研究枚举类型 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
ouble>(Size.class);    map.put(Size.Small, 0.8);    map.put(Size.Medium, 1.0);    map.put(Size.Large, 1.2);    for (Map.Entry<Size, Double> entry : map.entrySet()) {     helper(entry);    }   }   private static void helper(Map.Entry<Size, Double> entry) {    System.out.println("Map entry: " + entry);   } }

驯服Tiger: 深入研究枚举类型(4)

时间:2011-01-31 IBM John Zukowski

枚举集合的作用类似于特性的集合,或者类似于某个枚举类型的所有元素的值的子集。EnumSet 类拥有以下一系列的静态方法,可以用这些方法从枚举类型中获取单个元素:

public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType)

public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s)

public static <E extends Enum<E>> EnumSet<E> copyOf(Collection<E> c)

public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType)

public static <E extends Enum<E>> EnumSet<E> of(E e)

public static <E extends Enum<E>> EnumSet<E> of(E first, E... rest)

public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2)

public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3)

public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4)

public static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3, E e4, E e5)

public static <E extends Enum<E>> EnumSet<E> range(E from, E to)

一旦创建了 EnumSet,就可以像对待其他任何 Set 对象那样对待这组对象。

结束语

使用枚举类型的基本概念很简单。您可以先定义一个指定的、封闭的值集合。然后,在需要这些值中的某一个值时,可以通过它的名称来指定它。该名称携带为其设置的类型。对于不同的大小,不是说 1 = Small, 2 = Medium, 3 = Large,并且确保没有将 1 = Monday 的这类东西传递给期望获得一个 Size 的方法,而是传入 Small、Medium 或 Large 作为 Size,因为编译器会确保您没有传入 Monday。这就是枚举类型的简单性。这些枚举类型就是类本身,因此,可以对类进行的所有操作同样可以作用于枚举类型上。

此外,枚举类型支持拥有构造函数、实例方法和变量,等等。应该对枚举类型使用这些方面吗?尽管使用这些方法和新的支持类肯定没问题,但提供构造函数和覆盖方法会有问题。说出为枚举中的每个 Size 所支付的价格真的有意义吗?或者说,在一个拥有枚举类型 Size 变量的类中做这些更有意义吗?

小心使用这些特性,不要因为这些特性可用就使用它们。要考虑到系统的总体设计,不要只图快点完成工作。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号