本文参考自:https://blog.csdn.net/qq_35385687/article/details/90147104 和https://www.cnblogs.com/jingmoxukong/p/6098351.html https://blog.csdn.net/heyrian/article/details/80764783 (谢谢大佬们) 首先对于枚举,有一张很适合的图片:
对于我来说,枚举就像是一个类,一种特殊的类,官方定义为:“一组固定的常量组成合法值的类型,如一年四季,人类的性别”,而在出现枚举之前,是有过 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里面体现。也就是说,他对应的实例是有限的。这也就是枚举的好处了,限制了某些东西的范围,
当然除了这些方法以外,还有很多可以实现的和自定义的方法。。(现在就是做一个了解,当时候用到再说hhhhh)
对于EnumMap的话就是:
是专门为枚举类型量身定做的 Map 实现。虽然使用其他的 Map(如 HashMap)实现也能完成枚举类型实例到值的映射,但是使用 EnumMap 会更加高效。
HashMap 只能接收同一枚举类型的实例作为键值,并且由于枚举类型实例的数量相对固定并且有限,所以 EnumMap 使用数组来存放与枚举类型对应的值,使得 EnumMap 的效率非常高
而对于EnumSet的话:
EnumSet 是枚举类型的高性能 Set 实现,它要求放入它的枚举常量必须属于同一枚举类型。EnumSet 提供了许多工厂方法以便于初始化
对于注解的认识就更加浅薄了。 基本上就是走马观花一样的,看看就行了。