使用RestTemplate的泛型方法

时间:2017-08-24 16:04:54

标签: java spring generics

This 解决方案对我没用,因此这不是重复,这是一个不同的问题..我在问另一个问题,因为它可能会呈现不同的解决方案而不是链接的帖子。

我正在尝试创建一个使用Spring的RestTemplate的通用方法,但是这个类型被忽略了,我的Object构造不正确。

通用方法:

public <T> ResponseEntity<T> restGetRequest(String url, String ... params) {
    ParameterizedTypeReference<T> type = new ParameterizedTypeReference<T>() {};

    RestTemplate template = new RestTemplate();

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);

    HttpEntity<String> entity = new HttpEntity<>(headers);
    return template.exchange(url, HttpMethod.GET, entity, type, params);
}

我正在尝试将此方法用于我可能在我的应用程序中使用的任何GetRequest,使代码更小。

问题:

尝试检索对象时,它的类型不是预期的类型,而是正常JSON(只是String)。

检索:

String url;
ResponseEntity<MyType> apiResponse = restGetRequest(url);

apiResponse不是我预期的类型MyType。这样,我的映射没有正确完成。

有没有办法在Java中执行此操作,不用创建新类,也不将类作为参数传递,也不扩展任何类? 只使用通用类型

0 个答案:

没有答案