Effective Java之用接口模拟可伸缩的枚举(三十四)
2018-01-07 09:40
351 查看
在实际工作中,我们常常会遇到这样的情况:
如果我在一个枚举类型封装在一个jar库里后,其他开发人员如果对该枚举进行扩展?
毕竟我刚开始定义的枚举并不是会涵盖所有的可能!
这样的情况下,由于我们知道enum虽然没写final,但是它是一个真正实现了final的类,所以不支持扩展,那么这种情况下如何扩展枚举呢?
答案是使用接口去模拟可伸缩的枚举,也就是说在接口中定义基本的枚举类型,让开发者用枚举去实现这个接口,这也就间接实现了枚举的伸缩性。话不多说,看代码:
如果我在一个枚举类型封装在一个jar库里后,其他开发人员如果对该枚举进行扩展?
毕竟我刚开始定义的枚举并不是会涵盖所有的可能!
public enum ModuleType{ RESOURCE_MODULE, //...... }
这样的情况下,由于我们知道enum虽然没写final,但是它是一个真正实现了final的类,所以不支持扩展,那么这种情况下如何扩展枚举呢?
答案是使用接口去模拟可伸缩的枚举,也就是说在接口中定义基本的枚举类型,让开发者用枚举去实现这个接口,这也就间接实现了枚举的伸缩性。话不多说,看代码:
public interface Type{ } public enum ModuleType implements Type{ RESOURCE_MODULE, //..... } 如果要扩展的话,其他开发人员可以实现Type接口 public enum ExtType implements Type{ XXXXX_MODULE, //... }
相关文章推荐
- 第34条:用接口模拟可伸缩的枚举
- EffectiveJava(34) -- 使用接口模拟可伸缩的枚举
- (34):使用接口模拟可伸缩的枚举
- java模拟老版QQ的伸缩面板
- 程序猿的日常——Java基础之抽象类与接口、枚举、泛型
- 学习effective java-15类和接口之使可变性减少
- 【总结】Effective java经验之谈,类与接口
- Effective Java——类和接口(下)
- Java HttpURLConnection模拟请求Rest接口解决中文乱码问题
- Effective Java笔记——第4章类和接口
- java后台调用HttpURLConnection类模拟浏览器请求实例(可用于接口调用)
- 通过生活中例子模拟java面向接口编程实例
- 使用Java函数接口及lambda表达式隔离和模拟外部依赖更容易滴单测
- effective java(18) 之接口优于抽象类
- EffectiveJava笔记(三) 类和接口
- Effective Java:类和接口
- Effective java笔记-第六章 枚举和注解
- 学习effective java-17类和接口之要么为继承而设计,并提供文档说明,要么就禁止继承
- Java枚举(用Java普通类模拟枚举的实现原理及JDK枚举API使用示例)
- Effective Java——类和接口(上)