《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 。使用其余值会致使编译提醒和警告。

这种也算是一种变相的枚举了吧

以上就是枚举的介绍了,谢谢你们

相关文章
相关标签/搜索