博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《JAVA-枚举》
阅读量:6982 次
发布时间:2019-06-27

本文共 1794 字,大约阅读时间需要 5 分钟。

hot3.png

枚举:枚举在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 。使用其他值会导致编译提醒和警告。

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

以上就是枚举的介绍了,谢谢大家

转载于:https://my.oschina.net/u/1269023/blog/727151

你可能感兴趣的文章
2014美团笔试之寻找最短子串
查看>>
Open Flash Charts
查看>>
pycharm中不能安装bs4的解决方案
查看>>
我对编程语言选择的理解
查看>>
6.3、Android Studio的CPU Monitor
查看>>
【java】JDK1.8时间日期库 新特性 所有java中时间Date的使用
查看>>
Android 应用开发者必看的 9 个 Tips
查看>>
关于Fragment框架,说的够清晰了。。。
查看>>
批处理写的俄罗斯方块
查看>>
ubuntu下安装加装DNS
查看>>
线性回归——最小二乘法_实例(二)
查看>>
POJ2866:Who Gets the Most Candies?(线段树 + 反素数 + 约瑟夫环)
查看>>
微信支付开发(12) 认清微信支付v2和v3
查看>>
k8s学习笔记之三:k8s快速入门
查看>>
SpringBoot慕课学习-SpringBoot开发常用技术整合
查看>>
即将毕业的一些感想
查看>>
iframe 解决跨域问题
查看>>
The existing index has no NexusIndexer descriptor
查看>>
界面收缩和扩展
查看>>
Selenium学习(14) 判断元素expected_conditions
查看>>