Java,Enum里定义属性和方法

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

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 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 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  Output ok(T data) {
        return new Output<>(ErrorCode.OK.getCode(), data);
    }

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

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

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

    /**
     * 设置 数据
     *
     * @param data 数据
     * @return 输出
     */
    public Output 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","操作异常"),

是有对应关系的。

你可能感兴趣的:(Java)