聊下枚举

枚举定义:

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

一、枚举的基本特性


简单枚举类

当创建枚举类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<T> 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在内部可有数组实现。


EnumMap数据结构


Enum构造函数


get实现


put实现
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Chapter 6 Enums and Annotations 枚举和注解 JAVA supports two s...
    LaMole阅读 966评论 0 2
  • 定义枚举 在定义枚举类型时我们使用的关键字是enum,与class关键字类似,要注意,值一般是大写的字母,多个值之...
    笨笨哒2018阅读 382评论 0 0
  • 18.7.18一、概述枚举常量在类型安全性和便捷性都很有保证,如果出现类型问题编译器也会提示我们改进。除了不能继承...
    静心安分读书阅读 600评论 0 0
  • 一、什么是枚举? 枚举是由一组固定的常量组成的合法值。通过这一定义,我们可以看出枚举的核心在于常量,而且常量是固定...
    Roger_黄阅读 1,299评论 0 4
  • 他,我的初恋,我没有真正开始的初恋
    一桥轻雨忆伞开阅读 332评论 0 0

友情链接更多精彩内容