1 package com.mmall.common; 2 3 import org.codehaus.jackson.annotate.JsonIgnore; 4 import org.codehaus.jackson.map.annotate.JsonSerialize; 5 6 import java.io.Serializable; 7 8 /** 9 * @author chd 10 * @version 1.0 11 * @description 12 * @date 2018/6/3 13 */ 14 @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) 15 //保证序列化json的时候,如果是null的对象,key也会消失 16 public class ServerResponse<T> implements Serializable { 17 18 private int status; 19 private String msg; 20 private T data; 21 22 23 private ServerResponse(int status){ 24 this.status = status; 25 } 26 27 private ServerResponse(int status, T data){ 28 this.status = status; 29 this.data = data; 30 } 31 32 private ServerResponse(int status, String msg){ 33 this.status = status; 34 this.msg = msg; 35 } 36 37 private ServerResponse(int status, String msg, T data) { 38 this.status = status; 39 this.msg = msg; 40 this.data = data; 41 } 42 43 @JsonIgnore 44 //使之不在json序列化结果当中 45 public boolean isSuccess(){ 46 return this.status == ResponseCode.SUCCESS.getCode(); 47 } 48 49 public int getStatus(){ 50 return status; 51 } 52 public T getData(){ 53 return data; 54 } 55 public String getMsg(){ 56 return msg; 57 } 58 59 60 public static <T> ServerResponse<T> createBySuccess(){ 61 return new ServerResponse<T>(ResponseCode.SUCCESS.getCode()); 62 } 63 //<T> ServerResponse<T>对于这个想了很久,也看了老师的解释,个人理解为:
public static ServerResponse<T> createBySuccess(){}不加第一个是声明了一个方法,一个有泛型作为返回值的函数方法,
然后加上第一个<T>是说声明此方法持有一个类型T,也可以理解成,将此方法声明为泛型方法,第一个记住是持有的意思,如果不持有,
后面的Serv<T>会报错 64 65 public static <T> ServerResponse<T> createBySuccessMessage(String msg){ 66 return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),msg); 67 } 68 69 public static <T> ServerResponse<T> createBySuccess(T data){ 70 return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),data); 71 } 72 73 public static <T> ServerResponse<T> createBySuccess(String msg,T data){ 74 return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),msg,data); 75 } 76 77 78 public static <T> ServerResponse<T> createByError(){ 79 return new ServerResponse<T>(ResponseCode.ERROR.getCode(),ResponseCode.ERROR.getDesc()); 80 } 81 82 83 public static <T> ServerResponse<T> createByErrorMessage(String errorMessage){ 84 return new ServerResponse<T>(ResponseCode.ERROR.getCode(),errorMessage); 85 } 86 87 public static <T> ServerResponse<T> createByErrorCodeMessage(int errorCode,String errorMessage){ 88 return new ServerResponse<T>(errorCode,errorMessage); 89 } 90 }
以上class类适用于服务器返回json字符串给前端的通用返回泛型类,仅此谨记泛型使用。