用法一:常量

在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

public enum Color {
RED, GREEN, BLANK, YELLOW
}

用法二:switch

JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。

public enum Code {
SUCCESS(10000,"操作成功"),FAIL(10001,"操作失败"); private int code;
private String msg; private Code(int code, String msg) {
this.code = code;
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
} /**
* 根据value获取Code
* @param value
* @return
*/
public static Code getByValue(int value){
for (Code code : values()) {
if (code.getCode() == value) {
return code;
}
}
return null;
} }
public class CodeTest {

	public static void main(String[] args) {
int code = Code.SUCCESS.getCode();
switch (Code.getByValue(code)) {
case SUCCESS:
System.out.println("ok...");
break;
case FAIL:
System.out.println("error...");
break;
default:
System.out.println("default...");
break;
} }
}

用法三:实现接口

所有的枚举都继承自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文档。

参考博文:http://blog.csdn.net/qq_27093465/article/details/52180865

最新文章

  1. APEX:对object中数据进行简单处理?
  2. Apply Newton Method to Find Extrema in OPEN CASCADE
  3. shell text process code
  4. MYSQL 常用函数(数学、字符串、日期时间、系统信息、加密)
  5. 数据库优化实践【TSQL篇】
  6. 日暮·第二章·烽烟传讯
  7. [Express] Level 2: Middleware -- 2
  8. c# 远程监控(2) 摄像头调研及模拟
  9. struts导包
  10. 银行B2C直连
  11. 2014年蓝桥杯预选赛 C/C++ 本科A组试题--切面条
  12. Dubbo服务端结合maven打jar包
  13. C# 利用反射完成计算器可扩展功能
  14. Redis+Twemproxy+HAProxy集群(转) 干货
  15. 20165308 《Java程序设计》第9周学习总结
  16. Xamarin iOS教程之显示和编辑文本
  17. [转] linux(debian)安装USB无线网卡(tp-link TL-WN725N rtl8188eu )
  18. asp.net读取用户控件,自定义加载用户控件
  19. Scala_修饰符
  20. 机器学习:Mean Shift聚类算法

热门文章

  1. leetcode206 Reverse Linked List
  2. mysql 三表索引优化
  3. DEDE后台升级后不显示编辑器
  4. JMeter-响应断言设置
  5. Product of Polynomials
  6. 定时执行 Job【转】
  7. 2-10 就业课(2.0)-oozie:11、hadoop的federation(联邦机制,了解一下)
  8. package报错
  9. 使用 json 模块,使json数据格式与Python字典dict数据格式互相转换,获取数据更加方便
  10. 图片与byte相互转换