测者的测试技术手册:Junit单元测试遇见的一个枚举类型的坑(枚举类型详解)

栏目: 编程工具 · 发布时间: 5年前

内容简介:枚举类型很早就在计算机语言中存在了,主要被用来将一组相似的值包含进一种类型中,这种类型的名称被定义成独一无二的类型描述符,这就是枚举类型。在java语言中,枚举类型是一个完整功能的类,允许开发者给枚举类型添加方法和属性,同时也可以提供接口。同时Java也为Enum提供了高质量的实现,比如comparable和Serializable接口.

Enum的简介

枚举类型很早就在计算机语言中存在了,主要被用来将一组相似的值包含进一种类型中,这种类型的名称被定义成独一无二的类型描述符,这就是枚举类型。

java 语言中,枚举类型是一个完整功能的类,允许开发者给枚举类型添加方法和属性,同时也可以提供接口。同时Java也为Enum提供了高质量的实现,比如comparable和Serializable接口.

* 其中:Comparable 是 排序 接口,如果一个Java类有这个接口,那么只能说明这个类支持排序。即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组),则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序。“实现Comparable接口的类的对象”可以用作“有序映射(如TreeMap)”中的键或“有序集合(TreeSet)”中的元素,而不需要指定比较器。 Serializable接口的对象转换成一个字符序列,并能够在以后将这个字节序列完全恢复为原来的对象。而且这个过程是可以通过网络完成的,也就是说序列化机制能够自动弥补不同操作系统之间差异。 *

Enum的定制

通过类的定义,可以给Enum一些复杂的功能,例如下面代码给Enum增加属性:

public enum DrinkEnum{

Enum的一些坑

Enum的原理

在使用enum创建枚举类型后,编译器会为其生成一个对应的枚举类,这个类继承与java.lang.Enum。举例如下:

编译后会变成Day.class,那么测者反编译后看到如下:
可以看到,编译后生成一个final类,同时前面的七个日期定义成七个类型。同时还有两个静态方法,分别是values()和 valueOf(),MONDAY枚举类型对应public static final Day MONDAY;,values()方法的作用就是获取枚举类中的所有变量,并作为数组返回,而valueOf(String name)方法与Enum类中的valueOf方法的作用类似根据名称获取枚举变量,只不过编译器生成的valueOf方法更简洁些只需传递一个参数。由于values()方法是由编译器插入到枚举类中的static方法,所以如果我们将枚举实例向上转型为Enum,那么values()方法将无法被调用,因为Enum类中并没有values()方法,valueOf()方法也是同样的道理。

final变量经常和static关键字一起使用,作为常量。final类通常功能是完整的,不允许被继承。

因此枚举类型,在调用中如果对内部变量使用了set函数,那么就是对一个常量进行了上set操作,也就会导致所有调用的地方的值都发生了变化。

EnumSet和EnumMap

EnumSet

EnumSet是一个针对枚举类型的高性能Set接口实现,但是在其中装入的枚举类型必须是同类型的,在EnumSet中通过bit-vector实现,也就是一个long型。EnumSet支持在遍历。

同时EnumSet还提供了一个获取子集的方法:
<weekdayenum>
  JobDays =  EnumSet.of(WeekDayEnum.Mon,WeekDayEnum.Fri);
</weekdayenum>

EnumMap

EnumMap是一个高性能的Map接口实现,主要管理用枚举做Key-Value的关系,内部是通过数组方式实现的。

<weekdayenum rainbowclolor="">
  schema = new EnumMap
 <weekdayenum values="" i="" rainbowclolor="">
  (WeekDatEnum.class);
 </weekdayenum>
</weekdayenum>

关注测者,关注测试


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员代码面试指南:IT名企算法与数据结构题目最优解(第2版)

程序员代码面试指南:IT名企算法与数据结构题目最优解(第2版)

左程云 / 电子工业出版社 / 109.00元

《程序员代码面试指南:IT名企算法与数据结构题目最优解(第2版)》是一本程序员代码面试"神书”!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一痛点,本书选取将近300道真实出现过的经典代码面试题,帮助广大程序员的面试准备做到接近万无一失。"刷”完本书后,你就是"题王”!《程序员代码面试指南:IT名企算法与数据结构题目最优解(第2版)》......一起来看看 《程序员代码面试指南:IT名企算法与数据结构题目最优解(第2版)》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具