public class RestResponseDTO<T extends Object> {
private T result;
}
我正在初始化的代码:
public RestResponseDTO getObject(String url,Class clz){
Class cv = clz.getClass();
RestResponseDTO<cv> restResponseDTO =restTemplate.getForObject(url,RestResponseDTO.class);
return restResponseDTO;
}
如何根据RestResponseDTO
类型在getObject
函数中初始化clz
?
ps- getForObject是spring restTemplate的标准函数 - http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html#getForObject-java.lang.String-java.lang.Class-java.lang.Object...-
答案 0 :(得分:0)
您可以添加以下方法:
void init(Class clazz) {
//you initializing logic
}
并将其命名为
RestResponseDTO<cv> restResponseDTO =restTemplate.getForObject(url,RestResponseDTO.class);
restResponseDTO.init(clz);
return restResponseDTO;
PS:您的cv
变量将始终具有相同的值。
答案 1 :(得分:0)
请尝试:
ResponseEntity responseEntity = restTemplate.getForObject(url,RestResponseDTO.class);
和 responseEntity.getBody() 会给你对象T.
答案 2 :(得分:0)
您无法将具有泛型参数的类传递给具有参数类型Class<?>
的方法,您需要Type
之类的内容。
一种方式(我唯一知道的)是:创建一个包含泛型参数的具体类型。
class IntegerResponse extends RestResponse<Integer>{
...
}
这样你就可以通过IntegerResponse.class