Effective Java之用接口模拟可伸缩的枚举(三十四)
在实际工作中,我们常常会遇到这样的情况:
如果我在一个枚举类型封装在一个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,//...
}
Effective Java之用接口模拟可伸缩的枚举(三十四)相关推荐
- Effective Java~38. 用接口模拟可扩展的enum
使用枚举类型有一个很好的方法来实现这种效果.基本思想是利用枚举类型可以通过为 opcode 类型定义一个接口,并实现任意接口. // Emulated extensible enum using an ...
- 三十四、深入Java中的泛型(上篇)
@Author:Runsen @Date:2019年10月22日 19:39:21 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件 ...
- 回溯法采用的搜索策略_强化学习基础篇(三十四)基于模拟的搜索算法
强化学习基础篇(三十四)基于模拟的搜索算法 上一篇Dyna算法是基于真实经验数据和模拟经验数据来解决马尔科夫决策过程的问题.本篇将结合前向搜索和采样法,构建更加高效的搜索规划算法,即基于模拟的搜索算法 ...
- 【零基础学Java】—Calendar类(三十四)
[零基础学Java]-Calendar类(三十四) java.util.Calendar日历类 Calendar类是一个抽象类,里面提供了很多操作日历字段的方法 Calendar类无法直接创建对象,里 ...
- 【零基础学Java】—ArrayList集合概述和基本使用(十四)
[零基础学Java]-ArrayList集合概述和基本使用(十四) 一.什么是ArrayList类以及注意事项 java.util.ArrayList是大小可变的数组的实现,存储在内的数据称为元素,此 ...
- 三十四、Fluent液体喷雾蒸发模拟
1. 概念 液体喷雾蒸发现象是生活中常见到的一种现象,广泛应用于化工行业,对Fluent进行设置可模拟这类现象. 2. 模型描述 本案例模拟甲醇在鼓风雾化器中的雾化,甲醇在被引入鼓风雾化器之前被冷却到 ...
- Java多线程学习三十四:使用 Future 有哪些注意点?Future 产生新的线程了吗
Future 的注意点 1. 当 for 循环批量获取 Future 的结果时容易 block,get 方法调用时应使用 timeout 限制 对于 Future 而言,第一个注意点就是,当 for ...
- 2021(飞猪、新浪、饿了么)内部重磅Java架构师面试突击手册,金三银四必看!
前言 年后上来,马上将迎来金三银四. 想必,很多人都在为这个黄金时期做准备,跳槽.涨薪.找工作吧~但是真的要做一个规划是不是又觉得手足无措,不知从何下手复习呢.今天就给大家分享一份花了一些时间整理的专 ...
- 今年Java行情崩盘?说好的金三银四呢…
传闻 今天看到朋友圈一个小伙伴发了一句:今年Java行情崩盘了? 看到这句话之后,我心中是有0.1秒的震惊的.但是又多了0.9秒的合理,想想最近一两年的所见所闻,似乎这在情理之中,于是我去问他看到了什 ...
最新文章
- 【跃迁之路】【497天】程序员高效学习方法论探索系列(实验阶段254-2018.06.17)...
- 并不是所有的程序员都适合做技术管理
- 用matlab编程简单电子琴,基于MATLAB的数字信号发生器及简易电子琴设计论文.doc...
- 四种依恋类型_依恋关系的研究
- 302状态码_HTTP状态码status code详解
- 【kafka】多图解Kafka中的数据采集和统计机制
- C程序设计语言现代方法07:基本类型
- 剑指offer面试题66. 构建乘积数组
- python画拓扑图权值是线条粗细_python—networkx:根据图的权重画图
- CSDN在线下载免费获取积分
- 分享一些第三方免费接口集
- 怎么做手机App测试?app测试详细流程和方法介绍
- 移动端优秀框架--Amaze UI(h5)
- Safari 14.0 版本安装json插件
- Load和Initialize的区别和使用
- Verilog中$finish、$stop的使用与区别
- html设置长宽高代码_CSS实现长宽比的几种方案
- 人工智能未来发展论文
- 数据库之postgreSql时间计算,例如获取前一天、后一天等。
- win10解决PL2303串口错误方法
热门文章
- 逆向工程核心原理读书笔记-API钩取之计算器显示中文数字
- 【Boost】boost库中thread多线程详解5——谈谈线程中断
- RabbitMQ消息追踪之Firehose
- Cocos2d-x Win7环境编译apk
- 从根本上了解异步编程体系
- 腾讯在信息流内容理解技术上的解决方案
- Serverless——前端的3.0时代
- 视频 | OFC上的腾讯声音
- nginx源码初读(1)--让烦恼从数据结构开始(ngx_cdecl/ngx_int/ngx_log)
- ZooKeeper、Eureka谁是最好的注册中心?