Java,Enum里定义属性和方法

2023-11-01

最近的项目用到了大神写的统一返回码的代码:

ErrorCode.java

/**
 * 统一6位, 异常码
 * @author Administrator
 *
 */
public enum ErrorCode {
	//global
	OK("000000","操作成功"),
	ERROR("000001","操作异常"),
    PASSWD_EMPTY("002007", "密码不能为空"),
    PASSWORD_ERROR("002024", "您输入的密码不正确"),
	;
	
	
    @Getter
    private String code;

    @Getter
    private String message;
    

    public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	ErrorCode(String code, String message) {
        this.code = code;
        this.message = message;
    }
    public static ErrorCode getSmsCode(String code){
        for (ErrorCode otpCode : ErrorCode.values()) {
            if(otpCode.getCode().equals(code))
                return otpCode;
        }
        return ErrorCode.ERROR;
    }
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
	    
}

然后调用的代码大概是这样:

UserController.java

@RestController
@RequestMapping(value="user")
public class UserController {
	
	@Autowired
	private UserService userService;
	
	@CrossOrigin
	@RequestMapping(value="/login", method = RequestMethod.POST)
	public Output login(String username, String password) {
		return this.userService.login(username, password);
	}
}

UserService.java

public interface UserService {
    public Output login(String username, String password);
}

UserServiceImp.java

@Override
public Output<UserVO> login(String username, String password) {
	// TODO Auto-generated method stub
	
    if () {//正常
        return Output.ok();
    } else {
        return Output.ex(ErrorCode.PASSWORD_ERROR);
    }
}

然后,最后的Output.java的代码:

package com.heque.minigame.common;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.heque.minigame.common.ErrorCode;

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 类       名:
 * 说       明:
 * 修 改 记 录:
 * 版 权 所 有:   Copyright © 2017
 * 公       司:
 * version   0.1
 * date   2018/1/1
 * author 
 */
@Data
@Accessors
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Output<T> implements Out {

    /**
     * 状态码
     */
    private String code;

	/**
     * 返回消息
     */
    private String message;

	/**
     * 数据
     */
    private T data;

    /**
     * 构造方法
     */
    public Output() {
    }

    /**
     * 构造方法
     *
     * @param code 状态码
     */
    public Output(String code) {
        this.code = code;
    }


    /**
     * 构造方法
     *
     * @param code 状态码
     * @param data 数据
     */
    public Output(String code, T data) {
        this.code = code;
        this.data = data;
    }
    
    public Output(String code,String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * 处理成功
     *
     * @param data 数据
     * @return 输出
     */
    public static <T> Output<T> ok(T data) {
        return new Output<>(ErrorCode.OK.getCode(), data);
    }

	public static Output<Object> message(String code,String message) {
        return new Output<>(code, message);
    }

    /**
     * 处理成功
     *
     * @return 输出
     */
    public static Output<Object> ok() {
        return new Output<>(ErrorCode.OK.getCode());
    }

    /**
     * 获取
     *
     * @param code 状态码
     * @return 输出
     */
    public static <T> Output<T> ex(ErrorCode code) {
        return new Output<>(code.getCode(),code.getMessage());
    }

    /**
     * 设置 数据
     *
     * @param data 数据
     * @return 输出
     */
    public Output<T> setData(T data) {
        this.data = data;
        return this;
    }
    
    public T getData() {
		return data;
	}
    
    /**
     * 获取状态码
     * @return
     */
    public String getCode() {
		return code;
	}

    /**
     * 设置状态码
     * @param code 状态码
     */
	public void setCode(String code) {
		this.code = code;
	}
	
	/**
	 * 获取消息
	 * @return
	 */
    public String getMessage() {
		return message;
	}

    /**
     * 设置消息
     * @param message 消息
     */
	public void setMessage(String message) {
		this.message = message;
	}
    
    
}

其中,让本菜不明白的是:

在UserServiceImp里只要传入一个Code,就可以让Code和Message对应起来。

 

后来,慢慢琢磨,才知道

ErrorCode(String code, String message) {
    this.code = code;
    this.message = message;
}

OK("000000","操作成功"),
ERROR("000001","操作异常"),

是有对应关系的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java,Enum里定义属性和方法 的相关文章

随机推荐

  • [精通Objective-C]块(block)

    精通Objective C 块 block 参考书籍 精通Objective C 美 Keith Lee 目录 精通Objective C块block 目录 块的语法 块的词汇范围 块的内存管理 块的使用 使用块为数组排序 使用块的并行编程
  • 让你真正明白cinder与swift、glance的区别

    http www aboutyun com thread 10060 1 1 html 问题导读 1 你认为cinder与swift区别是什么 2 cinder是否存在单点故障 3 cinder是如何发展而来的 在openstack中 我们
  • 计算机辅助绘图考试题,计算机辅助设计绘图考试题(A)(大学期末复习试题).doc...

    教师试做时间出题教师 取题时间审核教研室主任出题单位使用班级考试日期院 部 主任考试成绩期望值印刷份数规定完成时间交教务科印刷日期 学号 姓名 班级 密 封 线 专业 年级 班 学年 第 学期 计算机辅助设计绘图 A 课试卷 题号一二三四五
  • Swagger 的简介和使用

    文章目录 Swagger 的简介和使用 什么是Swagger 简介 Swagger页面 Swagger快速上手 pom xml文件中引入依赖 构建Swagger配置类 Swagger使用 常用注解说明 注解的使用 总结 Swagger 的简
  • Spark jar包加载顺序及冲突解决

    一 spark jar包加载顺序 1 SystemClasspath Spark安装时候提供的依赖包 通常是spark home目录下的jars文件夹 SystemClassPath 2 Spark submit jars 提交的依赖包 U
  • Java-Map集合

    基本使用 public class Demomap public static void main String args Map
  • 关于VMware workstation Player的虚拟网络编辑器没有的情况

    VMware workstation Player 是没有 虚拟网络编辑器的 如果要按照韦东山老师的方法去配置NAT网络 可以再下载VMware workstation pro 尽管不在试用期 依然会给你虚拟网络编辑器的应用安装
  • 光照 (5) 光照贴图

    物体在不同的部件上都有不同的材质属性 1 1 漫反射 允许我们对物体的漫反射分量 以及间接地对环境光分量 它们几乎总是一样的 和镜面光分量有着更精确的控制 漫反射贴图 Diffuse Map 使用一张覆盖物体的图像 让我们能够逐片段索引其独
  • 十大排序算法:快速排序算法

    一 快速排序算法思想或步骤 分解 数组A p r 被划分为两个子数组A p q 1 和A q 1 r 使得A q 为大小居中的数 左侧A p q 1 中的每个元素都小于等于它 而右边A q 1 r 每个元素都大于等于它 解决 通过递归调用快
  • linux shell oracle脚本_分享一个shell脚本--统计Oracle最消耗资源的SQL语句

    概述 This project meant to provide useful scripts for DB maintance and management to make work easier and interesting 今天主要
  • Unity Shader Graphs无法代码动态赋值的问题解决

    起因 给一个材质球更换图片 动态更换了很久 换不上去 解决 Reference unity给的是随机的名字只需要改成自己的名字就可以了 完美解决 不需要下划线 只是自己定义的名字 box EndTarget image material S
  • sqli-labs通关攻略教程六(less26~less28a)

    文章目录 less 26 方法1 方法2 补充知识 less 26a less 27 less 27a less 28 less 28a less 26 方法1 由题目可知 本题绕过了空格和注释 注释符用 1 1或者 00绕过 空白符绕过
  • android intent深入解析

    一 Intent的显示调用 1 intent setClass this OtherActivity class 2 intent setClassName this com zizhu activitys OtherActivity 3
  • Linux chown命令

    Linux Unix 是多人多工操作系统 所有的文件皆有拥有者 利用 chown 将指定文件的拥有者改为指定的用户或组 用户可以是用户名或者用户ID 组可以是组名或者组ID 文件是以空格分开的要改变权限的文件列表 支持通配符 一般来说 这个
  • java解决Exception in thread “main“ java.lang.OutOfMemoryError: GC overhead limit exceeded

    这个就是内存占用超过了限制 解决方案 加载文件的容量太大 这个只能切分文件 使用BufferedInputStream一行行读取 BufferedInputStream bufferedReader new BufferedInputStr
  • 输入三角形的3个边长,a,b,c求出三角形的面积。(C语言)

    代码 define CRT SECURE NO WARNINGS 1 include
  • requestBody注解转化json报错

    RequestBody ResponseBody 注解详解 转 解决方法 不要用modelMap 新建一个hashMap类即可 进来给app写接口比较多 遇到一个bug requestBody会自动往modelMap里加解决办法 清空map
  • 用redis实现支持优先级的消息队列

    用redis实现支持优先级的消息队列 为什么需要消息队列 系统中引入消息队列机制是对系统一个非常大的改善 例如一个web系统中 用户做了某项操作后需要发送邮件通知到用户邮箱中 你可以使用同步方式让用户等待邮件发送完成后反馈给用户 但是这样可
  • 出现 HTTP 错误 500.19 错误代码 0x800700b7

    这个内容出现主要问题是在IIS上 我们一般程序开发 iis中默认的路径只是http localhost 相当于环境变量中已定义好了 如果自己创建的项目直接将路径定义到这 就会替换图二中的路径 然后你的程序图一中所指向的路径就会无效 图三是我
  • Java,Enum里定义属性和方法

    最近的项目用到了大神写的统一返回码的代码 ErrorCode java 统一6位 异常码 author Administrator public enum ErrorCode global OK 000000 操作成功 ERROR 0000