- 19.1 enum特性
enum实现Serializable接口,自动添加了equals和hashCode方法
方法名称 | 含义 |
---|---|
enums.values() | 返回类元素的数组 |
enum.ordinal() | 返回次序的int值 |
enum.getDeclaringClass() | 全类名 |
Enum.valueOf() | 根据名字返回实例 |
- 19.1.1 支持静态导入
- 19.2 enum类可以作为一个正常的类
- enum实例必须最先定义
- 构造函数默认是private,可以省略,不能为别的,只能内部调用
- 19.2.1可以覆盖修改toString方法
- 19.3switch中使用
- case中可以直接写元素,不用类名来引用
- 在Java7中添加了对String的支持,char是ascill码,String是hashCode加equals安全检查
- 19.4 values()方法是由编译器插入到enum定义中的静态方法,Enum中没有,Class中有一个getEnumConstants()方法可以用来获取enum中的实例,和values()方法结果相同
- 19.5 enum是继承至Enum中的,所以不能再继承
- 19.6 enum与泛型结合使用,泛型库,随机选取
- 19.7 枚举不能继承,但是可以同时继承一个接口,以达到泛型向上转型,统一类型
- 19.8EnumSet抽象类
方法 | 含义 |
---|---|
EnumSet.noneOf(xxx.class) | 生成一个空的EnumSet< xxx > |
EnumSet.of(xxx…) | 这些元素的集合 |
EnumSet.allOf(xxx.class) | 这个类所有实例的集合 |
EnumSet.range(a,b) | 从[a,b]元素的集合 |
EnumSet.complementOf(enumset<>) | 反转这个,有的变无,无中生有 |
- 19.9EnumMap 键值必须来自一个enum,使用和一般Map相似
- 19.10enum的元素可以实现本类中的抽象方法或者覆盖一般的方法
- 19.10.1利用enum设计责任链模式,因为可以重载接口,所以用values方法获取所有实例,以此调用接口方法
- 19.10.2//TODO