java中数据字典硬编码_Java编程中为什么使用枚举(Enum)(禁止硬编码)?

为了图快,很多人在编码过程中,常常使用硬编码(我们说的写死),尤其是一些新手,这是编程规范的大忌。因为别人接手或者自己后期维护的时候,常常脑壳疼。比如说用了数据字典,你若写死,就真的要命了。谁知道你写的一大堆1呀2呀之类的代表什么?若没有数据库设计说明文档,估计基本上只有写代码那个人自己才看得懂。

所以,为什么要使用枚举呢?我们先看这样一段代码:

public enum OrganizationCodeEnum {

BK("建设银行", "BK105"), RS("省医保", "539900"), YH("银海", "RS11"), YDJY("异地就医", "RS22"), FES("文件来源", "Fes");

private String name;

private String index;

private OrganizationCodeEnum(String name, String index) {

this.name = name;

this.index = index;

}

public static String getName(String index) {

for (OrganizationCodeEnum c : OrganizationCodeEnum.values()) {

if (c.getIndex().equals(index)) {

return c.name;

}

}

return null;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getIndex() {

return index;

}

public void setIndex(String index) {

this.index = index;

}

}

//文件状态

public enum StatusCodeEnum {

S1("接收成功", "1"), S2("审核成功", "2"), S3("签章失败", "3"), S4("签章并发送成功", "4"), S5("发送失败", "5");

private String name;

private String index;

private StatusCodeEnum(String name, String index) {

this.name = name;

this.index = index;

}

public static String getName(String index) {

for (StatusCodeEnum c : StatusCodeEnum.values()) {

if (c.getIndex().equals(index)) {

return c.name;

}

}

return null;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getIndex() {

return index;

}

public void setIndex(String index) {

this.index = index;

}

}

我们上述使用枚举来对数据状态、字典等字段进行描述(type、status等),方便后期维护和扩展,假若我们不使用枚举,那么很可能编码的时候,就会这样:orgName.setStatus("1");

如果没有注释,我们很难知道这"1"是什么?使用枚举:

orgName.setStatus(StatusCodeEnum.S1.getIndex());

// 或者

orgName.setStatus(StatusCodeEnum.getIndex("接收成功"));

246691658b5da0dfd12d01f3793f8ccb.png

使用枚举有什么好处?

1)防止传递参数错误

比如:orgName.setStatus("11");

实际上我们并没有定义"11"这个参数状态,但是程序编译时可以通过,可实际是有问题的,使用枚举,就能规避这样的问题。

2)去除equals两者判断

由于常量值地址唯一,使用枚举可以直接通过“==”进行两个值之间的对比,性能会有所提高。

// 耗费性能

if("status".equals(variable)) {

...

}

// 使用枚举,提高性能

if(StatusCodeEnum.S1.getIndex() == variable) {

....

}

3)编译和修改优势(与常量类相比)

枚举类编译后默认final class,不允许继承。

常量类可被继承修改、增加字段等,易导致父类不兼容。

4)数据库兼容

枚举型可直接与数据库交互。

5)Switch语句优势

使用int、String类型switch时,当出现参数不确定的情况,偶尔会出现越界的现象(需做容错操作),使用枚举,编译期间限定类型,不允许发生越界。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值