枚举的使用

**

枚举

**
在枚举中,我们可以把相关的常量分组到一个枚举类型里,枚举也比常量类有更多灵活的方法,使用枚举,可以有效提高代码的整洁性,可读性,可维护性等

常用场景:
1.作为普通常量使用,如星期,季节,颜色等等,通常配合switch语句使用
//周一到周天枚举
public enum WeekEnum {
MON,TUES,WED,THURS,FRI,SAT,SUN;
}
使用

//jdk1.7开始switch语句开始支持String类型,而jdk1.6之前只支持int,char,enum类型,使用枚举的话,能使代码的可读性大大增强
public class TestEnum {
public static void main(String[] args) {
WeekEnum week = WeekEnum.TUES;
switch (week) {
case MON:
System.out.println(“星期一”);
break;
case TUES:
System.out.println(“星期二”);
break;
case WED:
System.out.println(“星期三”);
break;
case THURS:
System.out.println(“星期四”);
break;
case FRI:
System.out.println(“星期五”);
break;
case SAT:
System.out.println(“星期六”);
break;
case SUN:
System.out.println(“星期天”);
break;
}
}
}
2.往枚举中添加变量,构造函数,达到灵活获取指定值的目的,通常用于一些业务系统中定义一些固定值.
//性别枚举[0:男 1:女 2:未知]
public enum GenderEnum {
MAN(0),WOMEN(1),UNKNOWN(2);
private int code; //编码标识
private GenderEnum(int code){
this.code = code;
}
public int getCode() {
return code;
}
}
使用

//输出->0 、 1 、 2
public class TestEnum {
public static void main(String[] args) {
System.out.println(GenderEnum.MAN.getCode());
System.out.println(GenderEnum.WOMEN.getCode());
System.out.println(GenderEnum.UNKNOWN.getCode());
}
}
3、往枚举中添加自己特定方法,以实现自己所需的相关业务逻辑。
定义

public enum CompanyEnum {
SF(“顺丰速运”, 1001), YTO(“圆通速递”, 1002), STO(“申通物流”, 1003), YD(“韵达快运”, 1004), YZPY(“中国邮政”, 1005);
private CompanyEnum(String company, int code) {
this.company = company;
this.code = code;
}
private String company; // 公司名称
private int code; // 公司编码
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
//根据物流公司名字获取对应的编码
public static int getCodeByCompany(String company) {
for (CompanyEnum c : CompanyEnum.values()) {
if (c.getCompany().equals(company.trim())) {
return c.code;
}
}
return 0;
}
//根据物流公司编码获取对应的名字
public static String getCompanyByCode(int code) {
for (CompanyEnum c : CompanyEnum.values()) {
if (c.getCode() == code) {
return c.getCompany();
}
}
return null;
}
}
使用

//输出->1001 、 圆通速递
public class TestEnum {
public static void main(String[] args) {
System.out.println(CompanyEnum.getCodeByCompany(“顺丰速运”));
System.out.println(CompanyEnum.getCompanyByCode(1002));
}
}
这种枚举用法,通常还可用于系统的错误码与对应的错误码描述,然后根据错误码获取错误码对应的描述。
总结
  1、所有枚举类都是继承java.lang.Enum类,可以把 enum 看成是一个普通的 class,它们都可以定义一些属性和方法,不过,因为java是单继承,所以枚举不能再继承其它类,但枚举可以实现接口。
  2、不使用枚举也可以用其它方式代替实现类似的效果,而灵活地运用枚举可以带来许多便利,但也切忌为了用枚举而用枚举,这样反而可能带来不利的影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值