有一个需求是需要把枚举的数值返回给前端
通常是一个枚举一个方法
但是如果有一个枚举类就要写一个方法有点麻烦
能不能前端传递一个枚举类名,后端找到这个枚举后返回
上代码:
maven :
<!-- java 反射加强jar 包-->
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.10.2</version>
</dependency>
1.创建一个枚举的公共接口
public interface BaseEnum {
String getCode();
String getValue();
}
2.创建我们的枚举类并实现这个接口 , 可以写多个枚举类(我这里只用1个举例)
public enum ErrorEnum implements BaseEnum{
NO_AUTHENTICATION("1","第一个值"),
PARAMETER_ERROR("2","第二个值"),
;
ErrorEnum(String code, String value) {
this.code = code;
this.value = value;
}
private String code;
private String value;
@Override
public String getCode() {
return this.code;
}
@Override
public String getValue() {
return this.value;
}
}
3.核心代码
public static void main(String[] args) {
//反射 根据包名获取包下所有枚举类
Reflections reflections = new Reflections("com.enums");
//获取到类集合
Set<Class<? extends BaseEnum>> monitorClasses = reflections.getSubTypesOf(BaseEnum.class);
System.out.println("枚举类有几个: "+monitorClasses.size());
//循环枚举集合
monitorClasses.forEach(m->{
String name = m.getName();
System.out.println("类的全路径 : "+name);
String substring = name.substring(name.lastIndexOf(".")+1);
System.out.println("切割后的类名 "+substring);
//如果类名一直进行操作
if ("ErrorEnum".equals(substring)){
try {
BaseEnum[] enumConstants = m.getEnumConstants();
for (BaseEnum anEnum : enumConstants) {
System.out.println("enumName:"+anEnum+" code:"+anEnum.getCode()+" value:"+anEnum.getValue());
}
} catch (Exception e) {
e.printStackTrace();
}
}});
}
以上,以后需要加一个枚举类的时候,前后端接口的带啊都不需要动,前端传递这个枚举类的类名即可