繁体   English   中英

如何在通用构造函数中传递参数类名称

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM