枚举:枚举在C/C++/c#/java中,是一个被命名的整型常数的集合,枚举在日常生活中很常见。
表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,就是一个简单的例子
既然讲了枚举是什么,那么也随便讲讲枚举一些常见的写法(主要是我在开发中写过的)
1、简单模式
public enum ColorEnum { yellow, red, blue,green}
这个就是一个最简单的了,这个可以很好的避免程序中某些固定值因为约定俗成造成的问题,
在使用的时候就直接ColorEnum.blue
2、带构造器
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()就可以获取()中的值。
3、自定义方法
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 。使用其他值会导致编译提醒和警告。
这种也算是一种变相的枚举了吧
以上就是枚举的介绍了,谢谢大家