在前后台分离开发过程中,统一响应的格式可以使用枚举类型进行规范开发,对于不同的错误/异常类型可以响应不同的状态码和响应信息。
1,枚举类型的简单理解:枚举类型就是包含了已经创建好对象的final类,这个final类的开始是一些枚举变量,枚举变量可以有多个值,这些参数被赋给了枚举对象,
枚举对象可以通过枚举类调用枚举变量获取。
总结以下几点:
1)枚举类型不能被继承或者实现(final)
2)枚举类型的构造方法默认为private,且只能为private,也就是说不能new 对象,只能使用“已经创建好的枚举对象”
(1) 枚举类型必须提供枚举对象参数所对应的构造方法
(2) 由于只能有私有构造方法,所以枚举类型不能继续其他类,但是可以实现接口和其他枚举类型。
3)除过上述两点外,枚举类和其他普通类没什么区别,也可以有属性,也可以有setter&getter,实际上,枚举类必须有枚举参数对应的属性,
不然枚举变量中赋的值是没有意义的,是无法获取到。
2,枚举类型响应码举例:
/**
枚举类
* @author Jong
*/
public enum ProcessEnum {
SUBMIT_SUCCESS(1,"处理提交成功"),
SUBMIT_FAIL(-1,"处理提交失败"),
EXECUTE_FAIL(-2,"处理执行失败"),
EXECUTE_SUCCESS(2,"处理成功");
private int code;
private String message;
ProcessEnum(int code, String message) {
this.code = code;
this.message = message;
}
public int getCode() {
return code;
}
public String getMessage() {
return message;
}
}
/**
* 通用响应信息
*/
@Data
public class Response {
private int code;
private String message;
public Response(ProcessEnum processEnum) {
this.code = processEnum.getCode();
this.message = processEnum.getMessage();
}
}
/**
* 增强响应信息
*/
@Data
public class TaskResponse extends Response {
private String taskId;
public TaskResponse(ProcessEnum processEnum, String taskId) {
super(processEnum);
this.taskId = taskId;
}
}
枚举对象的一个重要的使用场景就是,解决硬编码的问题,作用类似于类中的常量,只不过有多个维度的值,所以大多数情况下不直接操作枚举对象,枚举类提供了两个很有用的静态
方法来操作枚举变量:
ProcessEnum executeSuccess = ProcessEnum.valueOf("EXECUTE_SUCCESS");
ProcessEnum[] enums = ProcessEnum.values();