1.enum:关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用
2.基本enum特性
调用enum的values()方法,可以遍历enum实例,返回enum实例的数组,且保持在enum中声明的顺序。
ordinary():返回int值,声明时的次序,从0开始。
name():返回声明时的名字。
enum是一个类,不能被继承。
3.switch与enum一起用:switch中使用enum
4.Enum并无values()方法,values是有编译器添加的static方法
5.所有enum类都继承自Enum,由于java不支持多继承,因此enum类不能继承其他的类,但可以实现多个接口。
6.虽然enum是个很小的类,但能消除很多重复代码。
7.使用接口组织枚举:
例:
Food接口
enum1 enum2 enum3
多个enum实现同一个接口,3个enum类都是Food的一种。
8.EnumSet
专用以替代标志,替代bit位标志,可用来表示某种“开关”信息。
在表示位标志时,比bit性能好,而且有更好的表达能力。
9.EnumMap
是一个Map,其key值来自于一个enum类
由于enum本身的限制,所以EnumMap在内部可由数组实现,因此EnumMap速度很快,放心使用EnumMap进行查找操作
命令设计模式:首先需要一个只有单一方法的接口,然后从该接口实现各自不同行为的多个实现类,这样就能构造命令对象,并在需要时使用他们了。
10.常量相关的方法
为enum定义一个或多个抽象方法,然后为每个enum实例实现抽象方法(对于这些抽象方法,每个enum实例中的实现都可以不尽相同)
职责链:多种不同方法解决一个问题,这多种方法链接在一起,遍历这个链,直到链中某个解决方案能够处理该请求。
11.多路分发
12.总结:
枚举类:小,优雅而清晰的解决问题。