Java泛型对象在http请求和响应对象中的封装
public class MySystemBaseResVo<T> { //注意:类的后面需要带上<T>,否则数据无法封装
private String err_no;
private String err_tips;
private T data;
public String getErr_no() {
return err_no;
}
public void setErr_no(String err_no) {
this.err_no = err_no;
}
public String getErr_tips() {
return err_tips;
}
public void setErr_tips(String err_tips) {
this.err_tips = err_tips;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
//发起请求封装到 T泛型类中
String resultJsonData = HttpClientV2Util.doPostForJson(url, json);
MySystemBaseResVo baseResVo = JSON.parseObject(resultJsonData, MySystemBaseResVo.class);
if(baseResVo.getData() != null) {
T resp = JSON.parseObject(baseResVo.getData().toString(), responseClass);
baseResVo.setData(resp);
}
//在具体使用的类中强制转换为 具体的实现类
if(baseResVo.getData() != null) {
//匹配
if (baseResVo.getData() instanceof MySettingResVo) {
MySettingResVo mySettingResVo = (MySettingResVo) baseResVo.getData();
logger.info("mySettingResVo=[{}]",GsonUtils.toJson(mySettingResVo));
}else if(baseResVo.getData() instanceof MySystemBaseResVo){
MySystemBaseResVo mySystemBaseResVo = (MySystemBaseResVo) baseResVo.getData();
logger.info("mySystemBaseResVo=[{}]",GsonUtils.toJson(mySystemBaseResVo));
}
}