Java中的枚举类小试

在项目的应用中,经常会用常量类来定义一些在变成中需要用到的常量值。
例如用1和0表示男孩女孩:

    public static final int boy = 1;
    public static final int girl = 0;

在很多的枚举类的文章中,用的例子都是星期的例子,这里结合在项目上的应用,使用一个审核状态的例子。

一个MIS系统中,信息需要走提交-审核-审核通过的流程,那么状态为New(N)-Audit(A)-Pass(P),那么使用枚举类的定义为:

public enum AuditState {
    New("N"),Audit("A"),PASS("P"){
        public boolean isOver(){
            return true;
        }
    };

    private String value;


    private AuditState(String value){
        this.value = value;
    }



    public String getValue() {
        return value;
    }


    public boolean isOver(){
        return false;
    }


    public AuditState getNextAuditState(){
        if(value.equals("P")){
            return null;
        }
        if(value.equals("A")){
            return AuditState.PASS;
        }
        if(value.equals("N")){
            return AuditState.Audit;
        }
        return null;
    }

}

枚举类不仅可以在类中定义各个常量的值,还可以定义一些逻辑方法,方便使用,例如上面的isOver判断流程是否已经结束,getNextAuditState方法得到流程的下一个状态等。

枚举类有助于解决各个常量之间关系容易记不住的问题。例如审核过程中存在着多级审核,但是每一级审核驳回的都不一样。例如现在需要一级二级三级审核,一二级审核都是驳回到New状态,三级审核则是需要驳回到一级审核。如果没有对业务很熟悉的话很容易出现错误,而使用枚举类则可以定义一个获取驳回状态的方法:

    public AuditState getRejectState(){
        if(value.equals("AL3")){
            return AuditState.Audit_Level_One;
        }

        return AuditState.New;
    }

枚举类是Java提供的一种语法糖,经过反编译之后其实还是得到的最上面的那种定义方式,但是使用枚举类确实可以获得很多方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值