2019独角兽企业重金招聘Python工程师标准>>>
枚举:枚举在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 。使用其他值会导致编译提醒和警告。
这种也算是一种变相的枚举了吧
以上就是枚举的介绍了,谢谢大家