枚举类本身不能被继承,所以我们需要通过实现接口的方式实现枚举的多态性
首先创建一个base接口
public interface BaseEnum {
/**
* 状态码
*
* @return code
*/
int getCode();
/**
* 返回信息
*
* @return msg
*/
String getMsg();
}
创建枚举类实现此接口
1.
public enum BasicEnum implements BaseEnum {
SUCCESS(0, "成功"),
ERROR(999, "系统错误");
private final int code;
private final String msg;
BasicEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}
@Override
public int getCode() {
return this.code;
}
@Override
public String getMsg() {
return this.msg;
}
}
2.
public enum Live2dEnum implements BaseEnum {
//A
LIVE_2_D_ENUM(1000, "未找到路径");
private final int code;
private final String msg;
Live2dEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}
@Override
public int getCode() {
return this.code;
}
@Override
public String getMsg() {
return this.msg;
}
}
枚举多态的使用
例如当我们统一处理网络请求返回时
我们可以为不同业务创建不同的Enum进行返回值的传递
public static HttpResult error(BaseEnum baseEnum) {
return new HttpResult(baseEnum.getCode(), baseEnum.getMsg());
}
@RequestMapping("/report")
public HttpResult report() {
return HttpResult.error(BasicEnum.ERROR);
}