关于java枚举的应用

  • • 发表于 7年前
  • • 作者 大妖怪
  • • 2628 人浏览
  • • 0 条评论
  • • 最后编辑时间 7年前
  • • 来自 [技 术]

原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处

一直觉得java的枚举就是个鸡肋,用得并不多,入坑这么多年也没正眼瞧过它。这段时间突然尝到甜头了,拿出来分享下。
废话不多讲,首先假设我们的需求是这样的,有一个用户表,里面存了用户的性别,分别是保密、男、女三个,我们用int类型0、1、2来表示。当我们要返回给前端用户性别的时候无非就两种方案:

  • 后端处理,返回性别具体内容。
  • 直接返回数字,让前端处理去。
    个人觉得大部分逻辑都应该往后端放,因此挺鄙视方案二的,对于方案一,以前一直是写个工具类,用switch来完成,最近用了枚举来处理,发现处理得方式更为优雅。废话不多讲了,直接贴代码:
public enum Gendar {
    KEEP(0, "保密"), MALE(1, "男"), FEMALE(2, "女");

    private int index;// 性别索引

    private String gendar;// 性别内容

    private static List<Gendar> gendarList;

    /**
     * @Title: getGender @Description: TODO(获取性别) @param @param
     * genderIndex @param @return 设定文件 @return Gender 返回类型 @throws
     */
    public static String getGendar(int gendarIndex) {
        initList();
        for (Gendar gendar : gendarList) {
            if (gendar.index == gendarIndex) {
                return gendar.gendar;
            }
        }

        return null;
    }

    /**
     * @Title: initList @Description: TODO(初始化genderList) @param 设定文件 @return
     * void 返回类型 @throws
     */
    public static void initList() {
        if (gendarList == null) {
            gendarList = new ArrayList<Gendar>();
            gendarList.add(KEEP);
            gendarList.add(MALE);
            gendarList.add(FEMALE);
        }
    }

    private Gendar(int index, String gendar) {
        this.index = index;
        this.gendar = gendar;
    }

    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }

    public String getGendar() {
        return gendar;
    }

    public void setGendar(String gendar) {
        this.gendar = gendar;
    }

}

使用的时候我们直接调用getGendar方法:

public static void main(String[] args) {
        System.out.println(Gendar.getGendar(0));
    }

运行效果:

以上是处理固定的性别,如果在项目中遇到不固定的情况,比如平台的用户角色什么的,万恶的产品经理今天加一个明天删一个,用switch、if..else什么的维护起来非常麻烦,而用枚举就显得很优雅很方便,只要增加或注释调一个常量,在初始化列表中把这个常量添加进去或者注释掉就行了。

分享到:
0条评论
Ctrl+Enter
作者

大妖怪

大妖怪

APP:1 帖子:76 回复:200 积分:7517

已加入社区[2946]天

梦里巷口,可有你倚门回首

作者详情》
Top