转载地址: http://www.cnblogs.com/linjiqin/archive/2011/02/11/1951632.html
package com.base.stu;
/***
*
* @author maizi
*
*
*
* 枚举是表示一些固定的数据集合。 稳定,有限, 同时也是为了限制对这个变量进行赋值。
*
* 枚举其实就是一个java类而已。 变量,方法都可以定义,也可以自己定义抽象方法。
*
*/
public class EnumTest {
// 普通枚举定义
public enum ColorEnum {
red, green, blue, black
};
// 其实枚举也可以和常用类一样,有属性,方法,
public enum SeasonEnum {
spring, summer, autumn, winter;
private String str = "季节枚举";
public static SeasonEnum getSeason(int number) {
if (1 == number) {
return spring;
}
return winter;
}
};
// 带有构造器的枚举
public enum GenderEnum {
man("MAN"), woman("WOMAN");
private final String value; // 枚举的值都是固定的一类值,所以一般里面的都是 final值变量
private GenderEnum(String value) {
this.value = value;
}
public String getValue() {
return this.value;
}
}
/**
* 订单状态
*
* 实现带有抽象方法的枚举
*
* @author jiqinlin
*
*/
public enum OrderState {
/** 已取消 */
CANCEL {
public String getStateName() { // 这些 CANCEL,WAITCONFIRM
// 就相当代表这个枚举类型,那么就相当与他的子类,
// 那就必须要实现这个抽象方法。直接理解子类实现父类的抽象方法。
return "已取消";
}
},
/** 待审核 */
WAITCONFIRM {
public String getStateName() {
return "待审核";
}
},
/** 等待付款 */
WAITPAYMENT {
public String getStateName() {
return "等待付款";
}
},
/** 正在配货 */
ADMEASUREPRODUCT {
public String getStateName() {
return "正在配货";
}
},
/** 等待发货 */
WAITDELIVER {
public String getStateName() {
return "等待发货";
}
},
/** 已发货 */
DELIVERED {
public String getStateName() {
return "已发货";
}
},
/** 已收货 */
RECEIVED {
public String getStateName() {
return "已收货";
}
};
public abstract String getStateName(); // 这个类定义类一个抽象方法
}
public static void main(String[] args) {
ColorEnum colorEnum = ColorEnum.black; // 枚举支持 Switch, 同时获取的时候,通过
// XXEnum.变量来获取对象。
// 感觉这样的一个变量就是一个枚举对象。
switch (colorEnum) {
case black:
System.out.println("color is black");
break;
case red:
System.out.println("color is red");
break;
case blue:
System.out.println("color is blue");
break;
default:
break;
}
// 枚举循环
for (SeasonEnum season : SeasonEnum.values()) {
System.out.println(season);
}
// 枚举个数 获取某一个枚举的下标
System.out.println(SeasonEnum.values().length + "====="
+ SeasonEnum.winter.ordinal());
// 调用方法
System.out.println(GenderEnum.woman.getValue());
// 抽象
for (OrderState order : OrderState.values()) {
System.out.println(order.getStateName()); // 相当与,子类调用各自实现的抽象方法。
}
}
}