JAVA杂项

Java中使用枚举(enum)还是常量?

定义表结构的时候经常会碰到一类字段:状态 ( status 或者 state ) 、类型 ( type ) ,而通常的做法一般是:

数据库 中定义 tinyint 类型。
比如:status tinyint(1) NOT NULL COMMENT ‘订单状态 1-待支付;2-待发货;3-待收货;4-已收货;5-已完结;’
Java 实体类 中定义 Short 类型。
比如:private Short status
然后项目中可能会充斥着下面这样的代码:

order.setStatus((short) 1);
 
if (order.getStatus() == 1) {
    order.setStatus((short) 2);
}
 
if (order.getStatus() == 4) {
    order.setStatusName("已收货");
}

这都是些什么魔鬼数字啊,没有注释根本没法看,如果手滑可能状态就设错了,而且不好排查是在哪处赋值的。

改进方案是用 常量 ,但是又会产生另一种效果:

public static final Short WAIT_PAY = 1;
 
if (WAIT_PAY.equals(order.getStatus())) {
    // 混用了解下
    order.setStatus((short) 2);
}

定义常量对使用者没有约束力,仍然可能会被程序员无视,而直接使用数字。

我们在实体类(DO/DTO/BO/VO/PO)和方法参数中,统一使用枚举类型的属性来保存有固定取值的字段。

要做到上面这一点,有下面三个地方要注意

  • 把接口的参数转化为枚举类型
  • 把接口返回的枚举类型转为String
  • 把枚举类型保存到数据库中

https://blog.csdn.net/xgw1010/article/details/108402444

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值