枚举,用来管理常量,在日常生活中很常见,比如一个人的姓名只能是男或女,一周的星期只能是7天中的一个等等,类似这种当一个变量有多种固定可能的取值时,就可以将它定义为枚举类型。在JDK1.5之前没有枚举类型,那时候一般用接口常量来替代,而使用Java枚举类型,可以更贴切的表示这种常量
代码示例
- package cn.com.example17;
-
- /**
- * 创建枚举类
- */
- public enum EnumClass {
-
-
- }
-
枚举类中可以有多个(属性)枚举项,每一个枚举项都是枚举类的实例
代码示例
- package cn.com.example17;
-
- /**
- * 创建枚举类
- */
- public enum EnumClass {
- // 定义枚举项
- A(),
- B("admin"),
- C; // 如果根据无参构造器定义枚举项,那么小括号可以省略
-
- // 属性
- public String name;
-
- // 构造器
- // 构造器不允许是公共的,默认是私有
- EnumClass(){}
-
- EnumClass(String name){
- this.name = name;
- }
-
- // 定义方法
- public void handler(){
- System.out.println("这是一个方法");
- }
-
- }
-
反编译
- Compiled from "EnumClass.java"
- public final class cn.com.example17.EnumClass extends java.lang.Enum<cn.com.example17.EnumClass> {
- public static final cn.com.example17.EnumClass A;
- public static final cn.com.example17.EnumClass B;
- public static final cn.com.example17.EnumClass C;
- public java.lang.String name;
- public static cn.com.example17.EnumClass[] values();
- public static cn.com.example17.EnumClass valueOf(java.lang.String);
- public void handler();
- static {};
- }
-
- package cn.com.example17;
-
- public class EnumClassTest {
-
- public static void main(String[] args) {
-
- // 因为枚举类中的枚举项都是一个静态常量的实例,因此我们可以通过类名直接调用
- EnumClass b = EnumClass.B;
- System.out.println(b.name);
-
- }
-
- }
-
代码示例
- package cn.com.example17;
-
- /**
- * 创建枚举类
- */
- public enum EnumClass {
-
- A(),
- B("admin"),
- C{
- @Override
- public void handler() {
- System.out.println("重写后的方法");
- }
- };
-
- // 属性
- public String name;
-
- // 构造器
- // 构造器不允许是公共的,默认是私有
- EnumClass(){}
-
- EnumClass(String name){
- this.name = name;
- }
-
- // 定义方法
- public void handler(){
- System.out.println("这是一个方法");
- }
-
- }
-
关于接口返回信息结构的统一封装,由于现在大多数项目都是采用的前后端分离进行开发,那么统一返回,方便了前端进行开发和封装,以及给出响应的状态码和描述信息。前端在axios的拦截器中可以对状态码进行判断 前端调用API接口,通过描述信息进行排查
1、创建ResponseStatus类
创建枚举类,并实例化出常用的状态码及描述信息
代码示例
- package cn.com.example17;
-
- public enum ResponseStatus {
-
- SUCCESS(2001,"接口调用成功"),
- VALIDATE_FAILED(2002,"参数校验失败"),
- FORBIDDEN(2003,"无权限访问"),
- FAILED(2004,"接口调用失败");
-
-
- private int code;
-
- private String message;
-
- ResponseStatus() {
- }
-
- ResponseStatus(int code, String message) {
- this.code = code;
- this.message = message;
- }
-
-
- public int getCode() {
- return code;
- }
-
- public void setCode(int code) {
- this.code = code;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
- }
-
2、创建Result类
创建Result类,用于返回统一的数据结构
代码示例
- package cn.com.example17;
-
- import java.io.Serializable;
-
- public class Result
implements Serializable{ -
- private static final long serialVersionUID = -1131858345563802214L;
-
- private Integer code;
- private String message;
- private T data;
-
- public Result() {
- }
-
- public Result(Integer code, String message, T data) {
- this.code = code;
- this.message = message;
- this.data = data;
- }
-
- public Integer getCode() {
- return code;
- }
-
- public void setCode(Integer code) {
- this.code = code;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public T getData() {
- return data;
- }
-
- public void setData(T data) {
- this.data = data;
- }
-
- @Override
- public String toString() {
- return "Result{" +
- "code=" + code +
- ", message='" + message + '\'' +
- ", data=" + data +
- '}';
- }
- }
-
-
3、创建ResponseResult类
创建ResponseResult类,封装success、failed及instance方法
代码示例
- package cn.com.example17;
-
- public class ResponseResult{
-
- public static <T> Result<T> success(T data){
- return new Result<>(ResponseStatus.SUCCESS.getCode(),ResponseStatus.SUCCESS.getMessage(),data);
- }
-
- public static <T> Result<T> success(String message,T data){
- return new Result<>(ResponseStatus.SUCCESS.getCode(),message,data);
- }
-
- public static Result<?> failed(){
- return new Result<>(ResponseStatus.FAILED.getCode(),ResponseStatus.FAILED.getMessage(),null);
- }
-
- public static Result<?> failed(String message){
- return new Result<>(ResponseStatus.FAILED.getCode(),message,null);
- }
-
- public static <T> Result<T> instance(int code,String message,T data){
- return new Result<>(code,message,data);
- }
-
- }