关于枚举类的写法及应用

枚举的好处以及与常量类的区别

1)枚举型可以直接与数据库打交道,通常使用varchar类型进行存储,对应的是枚举的常量名。(数据库中也有枚举类型)

2) switch语句支持枚举型,当switch使用int、String类型时,由于值的不稳定性往往会有越界的现象,对于这个的处理往往只能通过if条件筛选以及default模块来处理。而使用枚举型后,在编译期间限定类型,不允许发生越界的情况

3) 当你使用常量类时,往往得通过equals去判断两者是否相等,使用枚举的话由于常量值地址唯一,可以用==直接对比,性能会有所提高。

4) 常量类编译时,是直接把常量的值编译到类的二进制代码里,常量的值在升级中变化后,需要重新编译引用常量的类,因为里面存的是旧值。枚举类编译时,没有把常量值编译到代码里,即使常量的值发生变化,也不会影响引用常量的类。

5)枚举类编译后默认为final class,不允许继承可防止被子类修改。常量类可被继承修改、增加字段等,容易导致父类的不兼容。

枚举的写法(有很多写法,本人的是自己工作中实践模板)

/**
 * @author huaiyan
 * @create 2019-03-04 15:04
 * @Description 虚拟号卡业务--工单状态查询
 */
public enum VirtualTaskTypeEnum {
    /**
     * 工单状态为申请中
     */
    APPLICATIONTYPE(0),
    /**
     * 工单状态为关闭中
     */
    CLOSETYPE(1),
    /**
     * 工单状态为变更中
     */
    ONCHANG(2);
    private int value;
    public int getValue() {
        return value;
    }
    VirtualTaskTypeEnum(int value) {
        this.value = value;
    }
    public static VirtualTaskTypeEnum valueOf(int value) {
        switch (value) {
            case 0:
                return APPLICATIONTYPE;
            case 1:
                return CLOSETYPE;
            case 2:
                return ONCHANG;
            default:
                return null;
        }
    }
}

对于枚举类如何取值?

如上所述,上面已经有了枚举类了,我们该 如何取值呢?
枚举类名+对应的值.getValue()

//例如:我想取0这个值,那么如下即可!
VirtualTaskTypeEnum.APPLICATIONTYPE.getValue();
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值