枚舉:枚舉在C/C++/c#/java中,是一個被命名的整型常數的集合,枚舉在平常生活中很常見。java
表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,就是一個簡單的例子android
既然講了枚舉是什麼,那麼也隨便講講枚舉一些常見的寫法(主要是我在開發中寫過的)c#
一、簡單模式this
public enum ColorEnum { yellow, red, blue,green }
這個就是一個最簡單的了,這個能夠很好的避免程序中某些固定值由於約定俗成形成的問題,code
在使用的時候就直接ColorEnum.blue開發
二、帶構造器字符串
public enum Gender { MAN("男"), WOMAN("女"); private final String value; Gender(String value) { this.value = value; } public String getValue() { return value; } }
這個也是用的比較多的,這個解決了簡單模式的問題,也爲枚舉添加了更多的附件功能,解決了部分java在switch的時候用中文的狀況(高版本的java支持switch字符串)Gender.MAN.getValue()就能夠獲取()中的值。get
三、自定義方法it
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(); }
其實這個的功能跟第二種差很少,可是有一個問題就是編譯成字節碼的時候會產生多個文件,因此我我的不是特別喜歡。編譯
我在開發中所用到的也就這麼幾種,另外說一種方式來替代枚舉(僅僅是在android中)
public class AppConstants { public static final int STATE_OPEN = 0; public static final int STATE_CLOSE = 1; public static final int STATE_BROKEN = 2; @IntDef({STATE_OPEN, STATE_CLOSE, STATE_BROKEN}) public @interface DoorState {} }
而後設置書寫這樣的方法
private void setDoorState(@AppConstants.DoorState int state) { //some code }
當調用方法時只能使用 STATE_OPEN , STATE_CLOSE 和 STATE_BROKEN 。使用其餘值會致使編譯提醒和警告。
這種也算是一種變相的枚舉了吧
以上就是枚舉的介紹了,謝謝你們