在项目中,我们常常会这样做,一个东西有很多类别,但是类别又不是特别需要单独拆分出来,我们就会将其各个类别定义为枚举值,就像这样:
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
Comments (暂无评论)