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

java 枚举 注入_java 枚举 注入

对于我来说,枚举就像是一个类,一种特殊的类,官方定义为:“一组固定的常量组成合法值的类型,如一年四季,人类的性别”,而在出现枚举之前,是有过
int 枚举模式和String
枚举模式,但都由于编译存在的缺点,而逐步被枚举给淘汰了。(主要在于,当出现问题时候,int和String的编译过程是会有问题的,而枚举则是:编译会失败,并出现错误信息,而不编译直接运行的话,会抛出异常)。

枚举的特点

首先是他的形态:

enum-modifiers enum enumname{
        enum-body
    }
    
    enum-modifiers 代表枚举的修饰符,比如public private
    enumname  就是对应的枚举的名字
    enum-body 也就是对应的枚举里的东西

差不多可以是这样:

public enum color{
        blue,red,yellow;
    }

再说说枚举的特点:

  1. 枚举是不能继承的,其实是因为enum 继承自 Java.lang.enum,而Java是不能多继承的,所以就等于他不能继承
  2. 枚举是可以有接口和方法的,亲自试验了一下
  3. 枚举里的类型,是默认处于 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的注解

对于注解的认识就更加浅薄了。
基本上就是走马观花一样的,看看就行了。