统一返回值Result
public interface ErrorCode {
int code();
String message();
}
/**
* @author dai
* @date 2022/10/11
*/
public enum ResultCode implements ErrorCode{
//请求成功
SUCCESS(0x0_0000_0001, "请求成功"),
REQUEST_FAILED(0x0_0000_9999, "请求失败"),
;
private final int code;
private final String message;
ResultCode(int code, String message) {
this.code = code;
this.message = message;
}
@Override
public int code() {
return code;
}
@Override
public String message() {
return message;
}
}
/**
* @author dai
* @date 2022/10/11
*/
public class Result<T> {
private final int code;
private final String message;
private final T data;
protected Result(int code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
public static <T> Result<T> success() {
return new Result<>(ResultCode.SUCCESS.code(), ResultCode.SUCCESS.message(), null);
}
public static <T> Result<T> success(T data) {
return new Result<>(ResultCode.SUCCESS.code(), ResultCode.SUCCESS.message(), data);
}
public static <T> Result<T> failed() {
return new Result<>(ResultCode.REQUEST_FAILED.code(), ResultCode.REQUEST_FAILED.message(), null);
}
public static <T> Result<T> failed(ErrorCode errorCode) {
return new Result<>(errorCode.code(), errorCode.message(), null);
}
public static <T> Result<T> failed(ErrorCode errorCode, String message) {
return new Result<>(errorCode.code(), message, null);
}
public int getCode() {
return code;
}
public String getMessage() {
return message;
}
public T getData() {
return data;
}
@Override
public String toString() {
return "Result{" +
"code=" + code +
", message='" + message + '\'' +
", data=" + data +
'}';
}
}
/**
* @author dai
* @date 2022/10/11
*/
public class App {
public static void main(String[] args) {
System.out.println(Result.success());
//Result{code=1, message='请求成功', data=null}
System.out.println(Result.failed());
//Result{code=39321, message='请求失败', data=null}
}
}