提示:以下是本篇文章正文内容,下面案例可供参考
一、枚举是什么?
枚举的作用就是定义一组常量,使用枚举我们可以很好的描述一些特定的业务场景,比如一年中的春、夏、秋、冬,还有每周的周一到周天,还有各种颜色,以及可以用它来描述一些状态信息,比如前后端分离时返回的code码等。
JDK1.5之前需要自定义枚举类。
JDK 1.5 新增的 enum 关键字用于定义枚举类。
二、项目中使用场景
1、枚举描述春、夏、秋、冬季节
注:工作中如果只是简单的使用枚举定义变量,直接用下面代码改吧改吧就可用了。
//定义一个枚举,注:使用的是enum关键字
enum SeasonEnum {
SPRING("春天", "春风又绿江南岸"),
SUMMER("夏天", "映日荷花别样红"),
AUTUMN("秋天", "秋水共长天一色"),
WINTER("冬天", "窗含西岭千秋雪");
private final String seasonName;
private final String seasonDesc;
private SeasonEnum(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
public static void main(String[] args) {
SeasonEnum summer = SeasonEnum.SUMMER;
//默认调用toString(),返回的是SUMMER字符串
System.out.println(summer);
//values():返回所有的枚举类对象构成的数组
SeasonEnum[] values = SeasonEnum.values();
for (int i = 0; i < values.length; i++) {
System.out.println(values[i].getSeasonDesc());
}
}
}
2、前后端分离,定义返回状态码可以使用
enum ResCodeEnum {
SUCCESS(200, "调用成功"),
FAIL01(500, "内部报错"),
FAIL02(404, "找不到路径");
private final Integer code;
private final String describe;
ResCodeEnum(Integer code, String describe) {
this.code = code;
this.describe = describe;
}
public Integer getCode() {
return code;
}
public String getDescribe() {
return describe;
}
public static void main(String[] args) {
ResCodeEnum success = ResCodeEnum.SUCCESS;
//toString():返回枚举类对象的名称 ; 本次重新了toString
System.out.println(success);
/**
* 返回成功的描述
*/
ResCodeEnum[] values = ResCodeEnum.values();
for (int i = 0; i < values.length; i++) {
if (200 == values[i].getCode()) {
System.out.println(values[i].getDescribe());
}
}
}
}
3、枚举中switch的用法
public static void main(String[] args) {
SeasonEnum seasonEnum = SeasonEnum.SPRING;
switch (seasonEnum) {
case SPRING:
System.out.println(seasonEnum.getSeasonDesc());
break;
case SUMMER:
System.out.println(seasonEnum.getSeasonDesc());
break;
case WINTER:
System.out.println(seasonEnum.getSeasonDesc());
break;
}
4、枚举中方法的使用
/**
* 传过来seasonName,返回对应的枚举对象
* @param seasonName
* @return
*/
public static SeasonEnum getSeasonEnum(String seasonName) {
for (SeasonEnum it : SeasonEnum.values()) {
if (it.getSeasonName() == seasonName) {
return it;
}
}
return null;
}