枚举:枚举在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 。使用其余值会致使编译提醒和警告。
这种也算是一种变相的枚举了吧
以上就是枚举的介绍了,谢谢你们