一个博客: https://blog.csdn.net/javazejian/article/details/71333103
阿里开发规范:
【参考】枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。
说明: 枚举其实就是特殊的类, 域成员均为常量, 且构造方法被默认强制是私有。
正例: 枚举名字为 ProcessStatusEnum 的成员名称: SUCCESS / UNKNOWN_REASON。
【强制】所有的枚举类型字段必须要有注释,说明每个数据项的用途。
1.枚举类的基本使用方式自己去找博客看看不在赘述
2.枚举类自己有一个ordinal 方法 返回int 是根据枚举成员的声明顺序来的,枚举类自带的有一个compareTo方法比较的是ordinal的值,看源码可知.
3.枚举对象的==和eques方式是一个作用看源码可知
4.每一个枚举类都会隐式的继承java.lang.Enum这个类,java中又是没有多继承的,所以枚举类不能继承,可以实现接口可以通过任意枚举反射获取父类得知
5.enum类中定义抽象方法
public enum EnumDemo3 {FIRST{@Overridepublic String getInfo() {return "FIRST TIME";}},SECOND{@Overridepublic String getInfo() {return "SECOND TIME";}};/*** 定义抽象方法* @return*/public abstract String getInfo();//测试public static void main(String[] args){System.out.println("F:"+EnumDemo3.FIRST.getInfo());System.out.println("S:"+EnumDemo3.SECOND.getInfo());/**输出结果:F:FIRST TIMES:SECOND TIME*/} }
6.enum类与接口
public enum EnumDemo2 implements food ,sport{FOOD,SPORT,; //分号分隔 @Overridepublic void eat() {System.out.println("eat.....");}@Overridepublic void run() {System.out.println("run.....");} }
7.使用switch不用再case中写引用,直接 case BLUE:....
8.枚举类EnumMap 底层使用数组效率高
EnumMap<ColorEnum, String> enumMap = new EnumMap<ColorEnum, String>(ColorEnum.class); enumMap.put(ColorEnum.RED, ColorEnum.RED.getName()); enumMap.put(ColorEnum.GREEN, ColorEnum.GREEN.getName()); enumMap.put(ColorEnum.BLANK, ColorEnum.BLANK.getName()); enumMap.put(ColorEnum.YELLO, ColorEnum.YELLO.getName())
9枚举类EnumSet
EnumSet<ColorEnum> colorEnumSet = EnumSet.allOf(ColorEnum.class); for (ColorEnum colorEnum : colorEnumSet) {System.out.println(colorEnum.getName()); }