目录

在项目中,我们常常会这样做,一个东西有很多类别,但是类别又不是特别需要单独拆分出来,我们就会将其各个类别定义为枚举值,就像这样:

public enum ReportType {
    CATEGORY_A,
    CATEGORY_B,
    CATEGORY_C,
    CATEGORY_D
}

但是有时候就会来一些需求,需要在页面上展示所有的分类,而且要中文,还就要你后端返回资源。这时候就需要给你的每个枚举值取个中文名了,刚好有一些特性能助我们一臂之力。

public enum ReportType {
    CATEGORY_A("CATEGORY_A", "分类A"),
    CATEGORY_B("CATEGORY_B", "分类B"),
    CATEGORY_C("CATEGORY_C", "分类C"),
    CATEGORY_D("CATEGORY_D", "分类D");

    private String type;
    private String name;

    ReportType(String type, String name) {
        this.type = type;
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

这样名字就取好了,接下来我们返回所有的枚举值。

public List<EnumType> findAllFormType() {
        List<EnumType> enumTypes = new ArrayList<>();
        ReportType[] reportTypes = ReportType.values();
        for (ReportType reportType : reportTypes) {
            EnumType enumType = new EnumType(reportType.getType(), reportType.getName());
            enumTypes.add(enumType);
        }
        return enumTypes;
    }
@Data
public class EnumType {
    private String type;
    private String name;

    public EnumType(String type, String name) {
        this.type = type;
        this.name = name;
    }

    public EnumType() {

    }
}

就这样,其实还有其它方法,大家可以去看看。

参考资料:https://stackoverflow.com/questions/7766791/serializing-enums-with-jackson