Spring Web的RestTemplate,交换。 java.util.LinkedHashMap无法强制转换为

时间:2016-07-18 07:17:58

标签: spring generics exchange-server resttemplate spring-rest

我们正在使用spring web的rest模板获取带有json响应的对象列表,这是我们的实现:

 public <T> List<T> list(Class<T> clazz, String uri, Map<String,?> pathVariables, Map<String,Object> requestParams, Object body) {
        RestTemplate restTemplate = new RestTemplate();
        ParameterizedTypeReference<List<T>> t = new ParameterizedTypeReference<List<T>>() {};
        String url = buildUrl(uri, requestParams);
        return restTemplate.exchange(url,HttpMethod.GET,null,t,pathVariables).getBody();
    }

实际上我们可以成功获取对象列表,但如果我循环列表,那么我得到了例外:

java.util.LinkedHashMap cannot be cast to XXXX(our entity)

Spring似乎不支持Generic <T>。 如果没有,为什么我们仍能很好地获得清单?但不能循环它。

1 个答案:

答案 0 :(得分:0)

我也遇到了与通用列表Spring RestTemplate相同的问题,并且无法找到一个很好的解决方案,因此我可以在foreach或Lambda表达式中循环元素。

至少你可以用老式的方式循环列表元素:

List<CLASS>  responseList = list(CLASS.class, ... );
    for(int i = 0 ; i< responseList.size(); i++ ){
    CLASS elem = responseList.get(i);
    ...
}