《JAVA-枚舉》

枚舉:枚舉在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 。使用其餘值會致使編譯提醒和警告。

這種也算是一種變相的枚舉了吧

以上就是枚舉的介紹了,謝謝你們

相關文章
相關標籤/搜索