聊下枚举

枚举定义:

一组具名的值的有限集合。

一、枚举的基本特性


聊下枚举_第1张图片
简单枚举类

当创建枚举类enum时,编译器会生成一个类,这个类继承与java.lang.Enum。

不能继承一个枚举。

1、枚举里面的方法

a、values()

按顺序返回所有的枚举值。

values()方法是有编译器添加的static方法。编译器还添加了valueOf()方法。

Enum中valueof 需要两个参数,而编译器自己添加的这个valueof只需要一个参数。

由于values()方法是有编译器插入到enum定义的static方法,所以,如果将enum实例向上转型为Enum,那么values()方法就不可访问,不过在Class中有一个getEnumConstants()方法,所以即便Enum接口中没有values()方法,我们仍然可以通过Class对象取得所有enum实例。

b、valueof(String name)

根据名称返回该枚举

c、valueOf(Class enumType,String name)

返回特定枚举名称和枚举类型的枚举

d、name()

返回该枚举的名称


二、如何有效的使用枚举

1、在接口中对枚举进行分组

由于无法从enum继承子类,当我们想扩展原enum中的元素时,希望对enum中的元素进行分组。

这时候我们可以在接口内部,创建该实现该接口的枚举,以此将元素进行分组,可以达到将美剧元素分组的目的。

2、EnumSet

enum可以算是一种集合,但是它不能去动态的增加或是删除元素。

EnumSet算是对该特点的补充,因为enum里面的元素也都是唯一的,Set集合中的元素也都是唯一的。

EnumSet中的元素必须来自某种enum.

EnumSet.allOf(Color.class);创建包含某种enum 所有元素的set集合

EnumSet.of(Color.BLACK) 创建包含某种enum 下 某一个元素的集合。

3、EnumMap

EnumMap是一种特殊的Map,它要求其中的键必须来自一个enum,由于enum本身的限制,所以EnumMap在内部可有数组实现。


聊下枚举_第2张图片
EnumMap数据结构


聊下枚举_第3张图片
Enum构造函数


聊下枚举_第4张图片
get实现


聊下枚举_第5张图片
put实现

你可能感兴趣的:(聊下枚举)