在C 、Java等電腦程式語言中,枚舉類型(Enum)是一種特殊資料類型,能夠為一個變數定義一組預先定義的常量。在使用枚舉類型的時候,枚舉類型變數取值必須為其預先定義的值之一。
在JDK5之前,Java語言不支援枚舉類型,只能用類別(class)來模擬實作枚舉類型。
/** 订单状态枚举 */public final class OrderStatus { /** 属性相关 */ /** 状态取值 */ private final int value; /** 状态描述 */ private final String description; /** 常量相关 */ /** 已创建(1) */ public static final OrderStatus CREATED = new OrderStatus(1, "已创建"); /** 进行中(2) */ public static final OrderStatus PROCESSING = new OrderStatus(2, "进行中"); /** 已完成(3) */ public static final OrderStatus FINISHED = new OrderStatus(3, "已完成"); /** 构造函数 */ private OrderStatus(int value, String description) { this.value = value; this.description = description; } /** 获取状态取值 */ public int getValue() { return value; } /** 获取状态描述 */ public String getDescription() { return description; } }
JDK5提供了一個新的類型-Java的枚舉類型,關鍵字enum可以將一組具名的值的有限集合創建為一種新的類型,而這些具名的值可以作為常數使用,這是一個非常有用的功能。
/** 订单状态枚举 */public enum OrderStatus { /** 常量相关 */ /** 已创建(1) */ CREATED(1, "已创建"), /** 进行中(2) */ PROCESSING(2, "进行中"), /** 已完成(3) */ FINISHED(3, "已完成"); /** 属性相关 */ /** 状态取值 */ private final int value; /** 状态描述 */ private final String description; /** 构造函数 */ private OrderStatus(int value, String description) { this.value = value; this.description = description; } /** 获取状态取值 */ public int getValue() { return value; } /** 获取状态描述 */ public String getDescription() { return description; } }
其實,Enum型別就是一個語法糖,編譯器幫我們做了語法的解析與編譯。透過反編譯,可以看到Java枚舉編譯後實際上是產生了一個類,該類繼承了 java.lang.Enum,並添加了values()、valueOf()等枚舉類型通用方法。
以上是java如何定義Enum類別實作取值與描述的詳細內容。更多資訊請關注PHP中文網其他相關文章!