首先对于枚举,有一张很适合的图片:

对于我来说,枚举就像是一个类,一种特殊的类,官方定义为:“一组固定的常量组成合法值的类型,如一年四季,人类的性别”,而在出现枚举之前,是有过
int 枚举模式和String
枚举模式,但都由于编译存在的缺点,而逐步被枚举给淘汰了。(主要在于,当出现问题时候,int和String的编译过程是会有问题的,而枚举则是:编译会失败,并出现错误信息,而不编译直接运行的话,会抛出异常)。
枚举的特点
首先是他的形态:
enum-modifiers enum enumname{
enum-body
}
enum-modifiers 代表枚举的修饰符,比如public private
enumname 就是对应的枚举的名字
enum-body 也就是对应的枚举里的东西差不多可以是这样:
public enum color{
blue,red,yellow;
}再说说枚举的特点:
- 枚举是不能继承的,其实是因为enum 继承自 Java.lang.enum,而Java是不能多继承的,所以就等于他不能继承
- 枚举是可以有接口和方法的,亲自试验了一下
- 枚举里的类型,是默认处于 final ,static和public 所以可以直接调用
总的来说,除了不能继承以外,完全可以把枚举当做一个普通的类,甚至是(类)数组来看待。又或者说他和class的区别就是:class new 出来的实例对象。这下就好理解了。只是,class,new对象,可以自己随便new,想几个就几个,而这个enum关键字,他就不行,他的实例对象,只能在这个enum里面体现。也就是说,他对应的实例是有限的。这也就是枚举的好处了,限制了某些东西的范围,
枚举的方法
方法名称 | 描述 |
values() | 以数组的形式返回枚举类型的所有成员 |
valuedOf() | 将普通字符串转换为枚举实例 |
compareTo() | 比较两个枚举成员在枚举中的顺序(注意是顺序) |
ordinal | 获取枚举成员的索引位置 |
当然除了这些方法以外,还有很多可以实现的和自定义的方法。。(现在就是做一个了解,当时候用到再说hhhhh)
EnumSet和EnumMap
对于EnumMap的话就是:
是专门为枚举类型量身定做的 Map 实现。虽然使用其他的 Map(如 HashMap)实现也能完成枚举类型实例到值的映射,但是使用
EnumMap 会更加高效。HashMap 只能接收同一枚举类型的实例作为键值,并且由于枚举类型实例的数量相对固定并且有限,所以 EnumMap
使用数组来存放与枚举类型对应的值,使得 EnumMap 的效率非常高
而对于EnumSet的话:
EnumSet 是枚举类型的高性能 Set 实现,它要求放入它的枚举常量必须属于同一枚举类型。EnumSet 提供了许多工厂方法以便于初始化
Java的注解
对于注解的认识就更加浅薄了。
基本上就是走马观花一样的,看看就行了。
















