Java枚举类型在后台响应中的使用

Posted lishaojun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java枚举类型在后台响应中的使用相关的知识,希望对你有一定的参考价值。

在前后台分离开发过程中,统一响应的格式可以使用枚举类型进行规范开发,对于不同的错误/异常类型可以响应不同的状态码和响应信息。

1,枚举类型的简单理解:枚举类型就是包含了有限个枚举对象集合的类,而枚举对象就是集合中其中一个,可以使用枚举类名直接调用。

  需要注意的是:

  1)枚举类型不能被继承或者实现

  2)枚举类型的构造方法是私有方法,因为枚举类型的对象已经在类中列举了,且是有限了,不能创建对象

2,枚举类型响应码举例:

import lombok.ToString;

@ToString
public enum CommonCode implements ResultCode 

    SUCCESS(true, 10000, "操作成功!"),
    FAIL(false, 11111, "操作失败!"),
    UNAUTHENTICATED(false, 10001, "此操作需要登陆系统!"),
    UNAUTHORISE(false, 10002, "权限不足,无权操作!"),
    SERVER_ERROR(false, 99999, "抱歉,系统繁忙,请稍后重试!"),
    INVALID_PARAM(false,10003,"非法参数!");
    //    private static ImmutableMap<Integer, CommonCode> codes ;
    //操作是否成功
    boolean success;
    //操作代码
    int code;
    //提示信息
    String message;

    private CommonCode(boolean success, int code, String message) 
        this.success = success;
        this.code = code;
        this.message = message;
    

    @Override
    public boolean success() 
        return success;
    

    @Override
    public int code() 
        return code;
    

    @Override
    public String message() 
        return message;
    


package com.xuecheng.framework.model.response;

/**
* Created by mrt on 2018/3/5.
* 10000-- 通用错误代码
* 22000-- 媒资错误代码
* 23000-- 用户中心错误代码
* 24000-- cms错误代码
* 25000-- 文件系统
*/
public interface ResultCode
//操作是否成功,true为成功,false操作失败
boolean success();
//操作代码
int code();
//提示信息
String message();

ResultCode 中定义了响应的基本信息,包含:是否成功,响应码,响应信息,在多模块开发中可以起到规范的作用。
CommonCode 为各个模块通用的响应码,包含了通用的异常信息,也可以为每一个模块定义自定义的响应码,继承 ResultCode 即可。  

使用枚举类型定义响应实现定义:
@Data
@ToString
@NoArgsConstructor
public class ResponseResult implements Response

//操作是否成功
boolean success = SUCCESS;

//操作代码
int code = SUCCESS_CODE;

//提示信息
String message;

public ResponseResult(ResultCode resultCode)
this.success = resultCode.success();
this.code = resultCode.code();
this.message = resultCode.message();

public interface Response  // 定义常量
public static final boolean SUCCESS = true;
public static final int SUCCESS_CODE = 10000;


使用举例(不需要响应实体对象):

new ResponseResult(CommonCode.FAIL);

对于需要同时返回实体对象和响应码的,可以继承 ResponseResult 并添加实体类到属性即可

@Data
public class PageResult extends ResponseResult 
    Page page;

    public PageResult(ResultCode resultCode,Page page) 
        super(resultCode);
        this.Page = page;
    

使用举例(需要响应实现对象):

new ResponseResult(CommonCode.FAIL,new Page());

 


以上是关于Java枚举类型在后台响应中的使用的主要内容,如果未能解决你的问题,请参考以下文章

怎么使用java中的枚举方法

Java数据类型在实际开发中的应用二枚举类型

JAVA中的枚举

java枚举类型enum用法

java 枚举可以大量用吗

java 枚举类型enum