50,523
社区成员
发帖
与我相关
我的任务
分享
<T>ServerResponse<T>
;两个泛型的使用,为什么需要第一个<T>,表示什么意思?package com.mmall.common;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import java.io.Serializable;
import java.util.List;
/**
* Created by CJ on 2017/11/16.
*/
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class ServerResponse<T> implements Serializable{
private int status;
private String msg;
private T data;
public ServerResponse(int status) {
this.status = status;
}
public ServerResponse(int status, String msg) {
this.status = status;
this.msg = msg;
}
public ServerResponse(int status, T data) {
this.status = status;
this.data = data;
}
public ServerResponse(int status, String msg, T data) {
this.status = status;
this.msg = msg;
this.data = data;
}
@JsonIgnore
public boolean isSuccess(){
return this.status ==ResponseCode.SUCCESS.getCode();
}
public int getStatus() {
return status;
}
public String getMsg() {
return msg;
}
public T getData() {
return data;
}
public static <T> ServerResponse<T> createBySuccess(){
return new ServerResponse<T>(ResponseCode.SUCCESS.getCode());
}
public static <T>ServerResponse<T> createBySuccessMessage(String msg){
return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),msg);
}
public static <T>ServerResponse<T> createBySuccess(T data){
return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),data);
}
public static <T>ServerResponse<T> createBySuccess(String msg, T data){
return new ServerResponse<T>(ResponseCode.SUCCESS.getCode(),msg,data);
}
public static <T>ServerResponse<T> createByError(){
return new ServerResponse<T>(ResponseCode.ERROR.getCode(),ResponseCode.ERROR.getDesc());
}
public static <T>ServerResponse<T> createByErrorMessage(String ErrorMessage){
return new ServerResponse<T>(ResponseCode.ERROR.getCode(),ErrorMessage);
}
public static <T>ServerResponse<T> createByErrorCodeMessage(int ErrorCode,String ErrorMessage){
return new ServerResponse<T>(ErrorCode,ErrorMessage);
}
}
ServerResponse对于这个想了很久,也看了老师的解释,个人理解为:
public static ServerResponse createBySuccess(){}不加第一个是声明了一个方法,一个有泛型作为返回值的函数方法,
然后加上第一个是说声明此方法持有一个类型T,也可以理解成,将此方法声明为泛型方法,第一个记住是持有的意思,如果不持有,
后面的Serv会报错