Java enum(枚举)使用详解之三
2024-09-03 00:14:55
DK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。
用法一:常量
在JDK1.5 之前,我们定义常量都是: publicstaticfianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
- public enum Color {
- RED, GREEN, BLANK, YELLOW
- }
用法二:switch
JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。
- enum Signal {
- GREEN, YELLOW, RED
- }
- public class TrafficLight {
- Signal color = Signal.RED;
- public void change() {
- switch (color) {
- case RED:
- color = Signal.GREEN;
- break;
- case YELLOW:
- color = Signal.RED;
- break;
- case GREEN:
- color = Signal.YELLOW;
- break;
- }
- }
- }
用法三:向枚举中添加新方法
如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。
- public enum Color {
- RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
- // 成员变量
- private String name;
- private int index;
- // 构造方法
- private Color(String name, int index) {
- this.name = name;
- this.index = index;
- }
- // 普通方法
- public static String getName(int index) {
- for (Color c : Color.values()) {
- if (c.getIndex() == index) {
- return c.name;
- }
- }
- return null;
- }
- // get set 方法
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getIndex() {
- return index;
- }
- public void setIndex(int index) {
- this.index = index;
- }
- }
用法四:覆盖枚举的方法
下面给出一个toString()方法覆盖的例子。
- public enum Color {
- RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
- // 成员变量
- private String name;
- private int index;
- // 构造方法
- private Color(String name, int index) {
- this.name = name;
- this.index = index;
- }
- //覆盖方法
- @Override
- public String toString() {
- return this.index+"_"+this.name;
- }
- }
最新文章
- 生产/消费 发送和接收消息---基于kombu和redis交互
- TestNG Study Note 1 - Eclipse 插件安装
- HDU1502/Luogu1352/UVa1220 party[树形DP]
- 一个js验证类
- php操作数据库找不到列
- BAT批处理(二)
- ";HTTP 错误 500.19 请求的页面的相关配置数据无效"; 解决办法
- Lucene子项目------------------Solr遇到的问题
- 用PHP Session和Javascript实现文件上传进度条,处理进度条
- mysql数据库 触发器简单实例
- 玩转 SSH(七):使用 dubbo + zookeeper 实现服务模块化
- git fsck -- 一致性检查
- Python Skelve 库
- Orchard克死你 之 刚起步
- kafka安装与测试
- 【做题】uoj#370滑稽树上滑稽果——巧妙dp
- 【flex】学习笔记/总结
- 利用Junit实现eclipse单元测试
- 【应用】R--判断类别型属性之间是否有相关性(相互之间是否独立)
- lkl风控.随机森林模型测试代码spark1.6
热门文章
- 数组中去除重复的对象的简单方法and&;&;的使用
- linux基础part3
- Django中的Cookie和Session操作以及CBV
- 关于python2中的unicode和str以及python3中的str和bytes
- LeetCode:加油站【134】
- HTML 获取屏幕,浏览器,页面的高度
- ubuntu14.04 安装pip vitualenv flask
- 第一天 格式化操作符 条件、for、while、break、continue语句
- android电池(四):电池 电量计(MAX17040)驱动分析篇【转】
- 囤题&;&;发布记录