微分享-工作中常用到的java enum实现形式

平时学习很少接触enum,很多时候会使用常量代替。在工作时可能会或多或少用到enum方法,下面是几个工作中常用的方法,基本上能满足绝大多数使用场景

简单的enum

public enum Color {  
  RED, GREEN, BLANK, YELLOW  
} 

添加参数并使用switch

public enum AreaChangeStatus {
    UNCRAWLED(0),
    SUBMIT_TO_CRAWL(1);

    public int value;

    // 参数使用通过构造方法传入进来的
    AreaChangeStatus(int i) {
        this.value = i;
    }

    // 使用switch获得相应的enum对象
    public static AreaChangeStatus of(int value) {
        switch (value) {
            case 0:
                return UNCRAWLED;
            case 1:
                return SUBMIT_TO_CRAWL;
            default:
                return UNCRAWLED;
        }
    }
}

enum带参数需要在创建一个带参数的改造方法,如果类型固定可以使用switch实现通过对应的参数获取其对象。如果觉得使用switch不够智能,每次添加新的enum的使用都用在switch中添加一个case,那么可以使用for循环,见下面的代码:

public enum AreaChangeStatus {
    UNCRAWLED(0),
    SUBMIT_TO_CRAWL(1);

    public int value;

    AreaChangeStatus(int i) {
        this.value = i;
    }

    // 使用for循环
    public static AreaChangeStatus of(int value) {
        for(AreaChangeStatus area : AreaChangeStatus.values()){
            if(area.value == value){
                return area;
            }
        }
    }
}

这个写只需要在上面添加enum就可以了,不需要在of方法中修改代码。

多个参数参数使用普通方式

public enum AlgoVersion {
    V1(1, "V1", "冒泡排序算法"),
    V2(2, "V2", "快速排序算法"),
    ;

    private int code;
    private String version;
    private String desc;

    AlgoVersion(int code, String version, String desc) {
        this.code = code;
        this.version = version;
        this.desc = desc;
    }

    public int getCode() {
        return code;
    }

    public String getVersion() {
        return version;
    }

    public String getDesc() {
        return desc;
    }

    public static AlgoVersion of(int code) {
        if (code == 1) {
            return V1;
        } else if (code == 2) {
            return V2;
        } else {
            return V1;
        }
    }

    public static AlgoVersion of(String version) {
        if ("V1".equalsIgnoreCase(version)) {
            return V1;
        } else if ("V2".equalsIgnoreCase(version)) {
            return V2;
        } else {
            return V1;
        }
    }
}

enum方法不是在实际开发中常用的方法,虽然他功能强大,但是有一点学习门槛,并且好多场景使用常量就已经足够了。只要掌握了上面的4个例子,基本上项目中需要用到enum的地方,都可以轻松搞定。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值