枚舉類相信不陌生,但實際開發中或者接手以前的代碼,發現大部分仍是使用常量Constant來替代,其實枚舉類擁有更多的優勢。前端
這裏咱們只講一個開發中實際用到的例子,如今有以下的一個場景:java
假設如今有一個實體類User,有一個屬性status,若是status爲0表示正常,status爲1表示無效,而咱們在數據庫中存儲是數值,但前端客戶所看見的應該是字符串,如何來創建起這麼一個關係?這裏就能夠用到枚舉類,代碼以下:數據庫
public class User implements Serializable { private static final long serialVersionUID = 5550303936960514419L; /** id */ private Integer id; //set,get方法省略 /** 標題 */ private String userName;//set,get方法省略 /** 狀態 */ private String status;//set,get方法省略 public static enum statusEnum{ STATUS_ZHENCHANG (0, "正常"), STATUS_WUXIAO (1, "無效"); private final int type; private final String desc; statusEnum(int type, String desc) { this.type = type; this.desc = desc; } public int getType () { return type; } public String getDesc () { return desc; } public static String getDesc (int index) { for (statusEnumc : statusEnum.values ()) { if (c.getType () == index) { return c.desc; } } return null; } } }
咱們本身在User內部定義一個status的枚舉類,來描述其狀態值和說明,這裏能夠很直觀的它們的關係,關於枚舉類的基本用法能夠自行了解。this
接着,咱們從數據庫中查出了User,將status屬性經過相應的映射爲字符串描述,以下:lua
User u = new User(); u.setStatus(User.statusEnum.getDesc(u.getStatus()); //status,0:正常 1:無效 System.out.println(u.getStatus());//輸出爲正常
這樣就經過枚舉類型,能夠自定義的,而且很優美的進行開發工做,值得注意的是如上面的getDesc是咱們本身寫的,枚舉類本身提供了一些操做自己元素的方法,如statusEnum.values就是返回全部的元素。code
若有錯誤,歡迎你們指正。開發