1、枚举的可伸缩性最后证明都不是什么好点子
- 扩展类型的元素是基本类型实例,基本类型的实例却不是扩展类型的元素,很混乱
- 目前还没有很好的方法来枚举基本类型的所有元素,及其扩展
- 可伸缩性会导致设计和实现变得复杂起来
2、可伸缩枚举类型举例,至少有一种具有说服力的例子(操作码,30条)
- 让API的用户提供自己的操作,有效扩展API 提供的操作集
- 客户端可面向接口调用
- <T extend Enum<T> & Operation> 增强枚举
- <T extends Enum<T> & OperationInter> 这个复杂的泛型不仅保证Class既是枚举类型而且也是OperationInter的子类
- 或者使用有限制的通配符类型,如下
- 这样更加灵活,允许调用者将多个实现类型的操作合并在一起
- 除非需要灵活实现多个实现类型,最好使用有限制的通配符类型
3、用接口实现可伸缩枚举有个小小的不足
- 无法实现从一个枚举类型继承到另一个枚举类型
- 可以将其封装在一个辅助类或者静态辅助方法中,避免代码的复制工作
4、总结
- 虽然无法编写可扩展枚举类型,却可以通过编写接口以及实现该接口的基础枚举类型进行模拟