一个博客: 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{ @Override public String getInfo() { return "FIRST TIME"; } }, SECOND{ @Override public 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 TIME S:SECOND TIME */ } }
6.enum类与接口
public enum EnumDemo2 implements food ,sport{ FOOD, SPORT, ; //分号分隔 @Override public void eat() { System.out.println("eat....."); } @Override public 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()); }