有人可以告诉我是否有办法将通用类型T传递给getAPIResponse(...)并在getAPIResponse方法中构建TypeReference。
我想将Model作为泛型类型传递给getAPIResponse,并在getAPIResponse方法中内置TypeReference。
TypeReference<APIResponse<Model>> type = new TypeReference<APIResponse<Model>>(){};
APIResponse<Model> response = getAPIResponse(result, type);
我想避免在getAPIResponse方法之外构建TypeReference实例,而是想在getAPIResponse方法中创建实例,并只将Generic类型传递给方法。
getAPIResponse方法
protected final <T> APIResponse<T> getAPIResponse(MvcResult pResult, TypeReference<APIResponse<T>> type) {
APIResponse<T> res = null;
try {
res = new ObjectMapper().readValue(pResult.getResponse().getContentAsString(), type);
}
catch (IOException e) {
Assert.fail(ExceptionUtils.getStackTrace(e));
}
return res;
}
我尝试更改为以下
protected final <T> APIResponse<T> getAPIResponse(MvcResult pResult, T t) {
APIResponse<T> res = null;
try {
TypeReference<APIResponse<T>> type = new TypeReference<APIResponse<T>>(){};
res = new ObjectMapper().readValue(pResult.getResponse().getContentAsString(), type);
}
catch (IOException e) {
Assert.fail(ExceptionUtils.getStackTrace(e));
}
return res;
}
但不是我不确定如何调用此方法。让我们说我想回来
APIResponse<Bank>
APIResponse<Branch>
APIResponse<List<Employee>>
如何在调用类中将这些泛型类型传递给我的方法调用?
答案 0 :(得分:-1)
更新:它不起作用。 JSON转换为Map而不是APIResponse,.... :(
试试这个:
protected final <T> APIResponse<T> getAPIResponse(MvcResult pResult) {
APIResponse<T> res = null;
try {
TypeReference<APIResponse<T>> type = new TypeReference<APIResponse<T>>(){};
res = new ObjectMapper().readValue(pResult.getResponse().getContentAsString(), type);
}
catch (IOException e) {
Assert.fail(ExceptionUtils.getStackTrace(e));
}
return res;
}
并致电:
APIResponse<Model> response = getAPIResponse(result);
你不需要给予&#39;对象