[英]How can I pass parameter class name in generic constructor
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;
}
我怎样才能initalize RestResponseDTO
在我getObject
功能取决于clz
型?
PS-getForObject是春天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 ...-
您可以添加如下方法:
void init(Class clazz) {
//you initializing logic
}
叫它
RestResponseDTO<cv> restResponseDTO =restTemplate.getForObject(url,RestResponseDTO.class);
restResponseDTO.init(clz);
return restResponseDTO;
PS:您的cv
变量将始终具有相同的值。
请试试:
ResponseEntity responseEntity = restTemplate.getForObject(url,RestResponseDTO.class);
和responseEntity.getBody()将给您对象T。
您不能将具有泛型参数的类传递给参数类型为Class<?>
,您需要类似Type
东西。
一种方法(我唯一知道的方法)是:创建一个包含通用参数的具体类型。
class IntegerResponse extends RestResponse<Integer>{
...
}
这样,您可以传递IntegerResponse.class
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.