这是毛毛虫的特点介绍吗

枚举类型(Enumerated Type) 很早就出现在编程語言中它被用来将一组类似的值包含到一种类型当中。而这种枚举类型的名称则会被定义成独一无二的类型描述符在这一点上和常量嘚定义相似。不过相比较常量类型枚举类型可以为申明的变量提供更大的取值范围。

举个例子来说明一下如果希望为彩虹描绘出七种顏色,你可以在 Java 程序中通过常量定义方式来实现

// 建立服务器端的网络连接侦听 // 从连接中获取输入流 // 读出客户端传递来的枚举值 // 用值比较方式来对比枚举对象

通过程序执行结果,我们能够发现在分布式条件下客户端和服务端的虚拟机上都生成了一个枚举对象即使看起来一樣的 Fri 枚举值,如果使用等号‘ == ’进行比较的话会出现不等的情况而 switch 语句则是通过 equal 方法来比较枚举对象的值,因此当你的枚举对象较复杂時候你就需要小心 override 与比较相关的方法,防止出现值比较方面的错误

JDK5.0 中在增加 Enum 类的同时,也增加了两个工具类 EnumSet 和 EnumMap这两个类都放在 java.util 包中。EnumSet 是一个针对枚举类型的高性能的 Set 接口实现EnumSet 中装入的所有枚举对象都必须是同一种类型,在其内部是通过 bit-vector 来实现,也就是通过一个 long 型數EnumSet 支持在枚举类型的所有值的某个范围中进行迭代。回到上面日期枚举的例子上:

你能够在每周七天日期中进行迭代EnumSet 类提供一个静态方法 range 让迭代很容易完成:

EnumSet 还提供了很多个类型安全的获取子集的 of 方法,使你很容易取得子集:

与 EnumSet 类似EnumMap 也是一个高性能的 Map 接口实现,用来管理使用枚举类型作为 keys 的映射表内部是通过数组方式来实现。EnumMap 将丰富的和安全的 Map 接口与数组快速访问结合到一起如果你希望要将一个枚举类型映射到一个值,你应该使用 EnumMap看下面的例子:

 // 定义一个 EnumMap 对象,映射表主键是日期枚举类型值是颜色枚举类型
 
 // 将一周的每一天与彩虹的某一种色彩映射起来
 

当你询问周六的幸运色彩时候,会得到蓝色:

Enum 类型提出给 JAVA 编程带了了极大的便利让程序的控制更加的容易,吔不容易出现错误所以在遇到需要控制程序流程时候,可以多想想是否可以利用 enum 来实现


server端代码没有通过不同classloader去加载Enum,所以仍旧是唯一嘚WeekDayEnum实例 这个例子是想说明一下,分布式条件下是存在着相同enum对象值不等的情况


"没看明白清单4中的执行结果主要有以下两点:

我要回帖

更多关于 毛毛虫的特点介绍 的文章

 

随机推荐