- 浏览: 204520 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (231)
- C++学习 (41)
- vc学习 (25)
- vc异常 (4)
- Flex (2)
- Ext (0)
- java学习笔记 (15)
- mysql学习笔记 (1)
- ibatis学习笔记 (7)
- struts1学习笔记 (1)
- hibernate学习笔记 (3)
- javascript学习笔记 (8)
- eclipse快捷键 (2)
- 英语学习 (1)
- cmd (1)
- eclipse 配置 (2)
- 其他 (4)
- JAVASE (34)
- firefox (1)
- linux (8)
- Apache (6)
- cms (22)
- jsuc (10)
- html (3)
- css (1)
- 作图 (2)
- vs2012 (2)
- 编码转换 (12)
- work_unicode (1)
- work_webbrowser (1)
- work_trade_quotes_login (1)
- c#学习 (38)
- wpf学习 (31)
- wpf快速学习 (1)
- VB学习 (1)
- NSIS (4)
- log4cpp (3)
- 学习web (1)
- 经验 (1)
- c_汇编 (1)
最新评论
转载地址:http://softbeta.iteye.com/blog/1185573
用法一:常量
在JDK1.5 之前,我们定义常量都是: publicstaticfianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。public enum Color {
RED, GREEN, BLANK, YELLOW
}
用法二:switch
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; } }
用法五:实现接口
所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。
public interface Behaviour { void print(); String getInfo(); } public enum Color implements Behaviour{ 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 getInfo() { return this.name; } //接口方法 @Override public void print() { System.out.println(this.index+":"+this.name); } }
用法六:使用接口组织枚举
public interface Food { enum Coffee implements Food{ BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO } enum Dessert implements Food{ FRUIT, CAKE, GELATO } }
用法七:关于枚举集合的使用
java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。
关于枚举的实现细节和原理请参考:
参考资料:《ThinkingInJava》第四版
转载地址:http://softbeta.iteye.com/blog/1185573
发表评论
-
贫血模式和充血模式
2013-03-06 14:36 1254贫血模式和充血模式 贫血模型:是指领域对象里只有get和 ... -
java的(PO,VO,TO,BO,DAO,POJO)解释
2013-03-06 14:34 636java的(PO,VO,TO,BO,DAO,POJO)解释 ... -
subString()包头不包尾。
2012-12-17 17:07 1766subString()包头不包尾。 -
显示上传的文件,图片则显示,附件则提供下载
2012-12-13 17:22 750package cn.com.leadfar.cms.back ... -
文件上传
2012-12-07 14:56 765文件上传 < ... -
反编译enum(转载)
2012-11-28 17:37 686public final class Gender exten ... -
滚动广告pptBox
2012-11-27 17:55 2297滚动广告pptBox /** * PPT 盒 ... -
javascript时钟倒计时(非原创)
2012-11-27 17:20 723/** * 模拟时钟 * @author lulu ... -
contentType,pageEncoding
2012-11-22 15:36 677contentType,pageEncoding -
ThreadLocal
2012-11-22 15:34 530ThreadLocal 则保存其他线程各自的变量,不会相互影响 ... -
服务器端包含
2012-11-22 15:33 688<jsp:include page="Na ... -
referer引用页面
2012-11-21 17:15 753referer引用页面 在网站上有多处可供登录的网页,要求在 ... -
ant 的windows下安装(非原创)
2012-07-23 14:37 723ant 的windows下安装(非原创) 1确定java 的 ... -
反汇编class,JadClipse(非原创)
2012-07-16 09:53 772反汇编class,JadClipse(非原创) 一、安装: ...
相关推荐
例如,上面的`enum Fruit`定义了三种水果类型,可以方便地在代码中使用这些命名的常量,而不是使用硬编码的整数值。 ```csharp enum Fruit { Apple, Pear, Orange }; ``` ### 异常处理 C#中的异常处理机制是通过...
- 例如,使用枚举类型来表示不同颜色的状态,增加代码的可读性。 **4.8 类加载机制** - 每个类都应该只被加载一次,以确保资源的有效利用。 - 理解类加载器的工作原理对于优化程序性能至关重要。 **4.9 AWT组件** ...
JavaScript是一种广泛应用于Web开发的脚本语言,它在浏览器端运行,为网页添加交互性,使得用户能够与页面进行动态沟通。这篇博文整理了55个JavaScript中的常用方法,涵盖了数组操作、对象处理、字符串处理、函数...
- **枚举(Enums)**:枚举是一种定义命名常量的方式,提高代码可读性。 后续章节可能涵盖更高级的主题,如内存管理、对象导向编程、图形渲染、网络通信、游戏循环和事件处理、物理模拟、音效和资源管理等。 总的...
- **枚举(Enumerations)**:枚举提供了一种创建命名常量的机制,有助于提高代码的可读性和维护性,例如定义游戏状态(PLAYING, PAUSED, EXITING)。 随着这些基础知识的掌握,读者将能够构建游戏的基本框架,如...
8. **枚举与注解**:了解枚举类型和注解的使用,它们在代码规范、元数据标注等方面发挥着重要作用。 9. **泛型**:理解泛型的概念,知道如何使用泛型类、接口和方法,以增强代码的类型安全性和重用性。 10. **设计...
结构)√(vs200510) 12. 控制结构一(分支)√(vs200511) 13. ...使用方法以及属性√(vs200515) 18. 利用构造函数初始化对象√(vs200516) 19. 重载方法以及运算符重载√(vs200517) 20. 核心对象...
在"转载]自动安装驱动程序_雪天使_新浪博客.pdf"这篇文章中,作者详细讲解了如何使用devcon自动化驱动程序的安装过程。这涉及到创建批处理文件,结合devcon的命令参数,例如`devcon install`,来指定驱动程序INF文件...
在编程领域,C#是一种广泛使用的面向对象的编程语言,尤其在开发Windows应用程序时非常常见。本项目"读取注册表跟系统自带一样"显然是一个使用C#编写的程序,其目标是模仿并可能增强Windows操作系统内置的注册表编辑...
结构)√(vs200510) 12. 控制结构一(分支)√(vs200511) 13. ...使用方法以及属性√(vs200515) 18. 利用构造函数初始化对象√(vs200516) 19. 重载方法以及运算符重载√(vs200517) 20. 核心对象...
种方法实现了信号和槽函数的关联,第一个按钮我们直接在设计器中实现其关 联;第二个按钮我们自己写了槽函数语句,其实图形的设计与直接写代码效果是 一样的。 这个程序里我们实现了两类窗口打开的方式,一个是自身...
Javascript小技巧一箩筐 事件源对象 event.srcElement.tagName event.srcElement.type ... 捕获释放 event.srcElement.setCapture();...event.srcElement.releaseCapture();... 根据鼠标获得元素: document....
结构)√(vs200510) 12. 控制结构一(分支)√(vs200511) 13. ...使用方法以及属性√(vs200515) 18. 利用构造函数初始化对象√(vs200516) 19. 重载方法以及运算符重载√(vs200517) 20. 核心对象...