最近在做一个SSM项目,里边用到了枚举,就看了一些关于枚举的文章,在这里记录一下.
1. 枚举这一关键字实在java SE5中引入的,在此之前想要使用枚举很麻烦.
2. 我们知道枚举和常量比较像,那么与常量对比,这种方式的优势在哪里呢?
2.1 首先枚举是一个类,在使用的时候可以进行编译时检查,避免出错.
2.2 预先记录那些值可以被接受,避免接受无效值.
public enum PizzaStatus {
ORDERED,
READY,
DELIVERED;
}
2.3我们把需要的的常量值放在了枚举类里边(我们在项目里边经常定义一个包common用来存放常量和全局异常),那么我们如何使用这些常量呢?
Java 中的每一个枚举都继承自 java.lang.Enum 类。当定义一个枚举类型时,每一个枚举类型成员都可以看作是 Enum 类的实例,这些枚举成员默认都被 final、public, static 修饰,当使用枚举类型成员时,直接使用枚举名称调用成员即可。
使用 类名.枚举定义的常量名 就可以获得相应的常量
PizzaStatus.ORDRED
PizzaStatus.READY
PizzaStatus.DELIVERED
3.我们经常会如何使用枚举呢?
3.1.自定义枚举方法(这在项目中经常使用):我们可以在枚举中定义属性,方法还有构造函数.
public enum ResponseCode {
SUCCESS(0, "SUCCESS"),
ERROR(1, "ERROR"),
NEED_LOGIN(10, "NEED_LOGIN"),
ILLEGAL_ARGUMENT(2, "ILLEGAL_ARGUMENT");
private final int code;
private final String desc;
ResponseCode(int code, String desc) {
this.code = code;
this.desc = desc;
}
public int getCode() {
return code;
}
public String getDesc() {
return desc;
}
}
3.2 枚举往往搭配着switch语句一起使用.
4.EnumSet and EnumMap
关于这两个类,目前我还没有研究,需要的小伙伴可以去下面的链接看一下.
了解EnumSet and EnumMap点这里
关于枚举先说这么多,现在对他的理解还存在与表面,以后有新的理解会继续更新.