Java enum 枚舉還可以這么用
在大部分編程語言中,枚舉類型都會(huì)是一種常用而又必不可少的數(shù)據(jù)類型,Java中當(dāng)然也不會(huì)例外。然而,Java中的Enum枚舉類型卻有著許多你意想不到的用法,下面讓我們一起來看看。
先來看一段代碼示例:
public enum State {Normal("正常態(tài)", 1), Update("已更新", 2), Deleted("已刪除", 3), Fired("已屏蔽", 4);// 成員變量private String name;private int index;// 構(gòu)造方法,注意:構(gòu)造方法不能為public,因?yàn)閑num并不可以被實(shí)例化private State(String name, int index) { this.name = name; this.index = index;}// 普通方法public static String getName(int index) { for (State c : State .values()) {if (c.getIndex() == index) { return c.name;} } return null;}// get set 方法public String getName() { return name;}public void setName(String name) { this.name = name;}public int getIndex() { return index;}public void setIndex(int index) { this.index = index;} }
從上面的代碼中我們可以看到,定義完枚舉值,然后在其后面加上分號(hào),接著就可以定義其他的變量、方法了。另外需要特別說明的是,enum中的構(gòu)造方法不可以用public標(biāo)識(shí),這樣做是為了防止用戶實(shí)例化enum。
2、可以用來定義常量先來回顧一下Java中如何定義常量吧,看下面一段代碼:
public static final int normalState = 1;private static final int updateState = 2;
下面我們還可以用enum枚舉來代替上面的常量定義,代碼如下:
public enum State { Normal, Update, Deleted, Fired}
在Java中用enum來定義常量在語法上沒有什么優(yōu)勢(shì),但是enum枚舉類型可以提供更多的操作功能。
3、在enum中實(shí)現(xiàn)接口先來看下面一段代碼:
public interface ICanReadState {void read();String getState();} public enum State implements ICanReadState {Normal("正常態(tài)", 1), Update("已更新", 2), Deleted("已刪除", 3), Fired("已屏蔽", 4);private String name;private int index;private State(String name, int index) { this.name = name; this.index = index;}// 接口方法1@Overridepublic String getState() { return this.name;}// 接口方法2@Overridepublic void read() { System.out.println(this.index + ":" + this.name);} }
和一般的類中使用接口一樣,enum枚舉中同樣可以繼承接口,并實(shí)現(xiàn)接口中的所有方法,這樣做的好處在于可以更方便地對(duì)枚舉中的值進(jìn)行排序、比較等操作,封裝性更好。
總結(jié)說白了,enum枚舉類型是一個(gè)不可以被繼承的final類,就以上面的State枚舉為例,如果你查看enum類型的字節(jié)碼,其實(shí)是State類型的類靜態(tài)常量。
via:ceocode – 小峰
相關(guān)文章:
1. Python通過類的組合模擬街道紅綠燈2. Ajax實(shí)現(xiàn)局部刷新的方法實(shí)例3. javascript實(shí)現(xiàn)前端分頁效果4. 教你怎么用python selenium實(shí)現(xiàn)自動(dòng)化測(cè)試5. .NET 8新預(yù)覽版使用 Blazor 組件進(jìn)行服務(wù)器端呈現(xiàn)(項(xiàng)目體驗(yàn))6. xpath簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理7. Python使用ElementTree美化XML格式的操作8. 完美實(shí)現(xiàn)浮動(dòng)元素橫排居中顯示9. bootstrap select2 動(dòng)態(tài)從后臺(tái)Ajax動(dòng)態(tài)獲取數(shù)據(jù)的代碼10. 使用JSP技術(shù)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的在線測(cè)試系統(tǒng)的實(shí)例詳解
