您的位置:首页 > 编程语言 > Java开发

浅谈java枚举(enum)

2015-09-17 15:32 453 查看
在实际编程过程中,会经常遇到这样的数据集,他们的数值在程序中是稳定不可变的,而且数据集中的元素是有限的,比如一周,四季等等,那么如何更好处理好这些数据集,此时枚举就派上了用场.

enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中。

下面是我在使用 enum 过程中的一些经验和总结,主要包括如下内容:

在jdk1.5之前,我们定义常量一般都是public static final,那么有了枚举之后,我们就可以这样玩了

public enum WeekDay{
MONDAY,TUESDAY,WENDNESDAY,THURSDAY,FRIDAY
}


枚举对象还可以加上value属性,让我们用起来更方便,看上去和HashMap的功能有点类似

public enum WeekDay{
MONDAY("周一"),TUESDAY("周二"),WENDNESDAY("周三"),THURSDAY("周四"),FRIDAY("周五");
}
private String value;
//构造器必须要有,而且是私有构造器,保证只能在内部使用
private WeekDay(String value){
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
//这样调用WeekDay.THURSDAY,我们就可以得到周四这个值了,这样做用在switch上代码的可读性也很好,jdk1.6之前switch只支持int,char,enum类型


实现带有抽象方法的枚举,比如现在有一个订单状态的场景,用枚举代表订单各种状态就非常方便了

public enum OrderState {
CANCEL {public String getName(){
return "已取消";}},
WAITCONFIRM {public String getName(){
return "待审核";}},
WAITPAYMENT {public String getName(){
return "等待付款";}},
ADMEASUREPRODUCT {public String getName()     {       return "正在配货";}},
WAITDELIVER {public String getName(){
return "等待发货";}},
DELIVERED {public String getName(){
return "已发货";}},
RECEIVED {public String getName(){
return "已收货";}};
//必须要有个抽象方法
public abstract String getName();
}
//调用OrderState.CANCEL.getName(),就可以获取“已取消状态了”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java enum