我们有个PO,长这样:
public class MyPO<T> implements java.io.Serializable{
private List<T> data = new ArrayList<T>();
}
结果用RestTemplate.getForObject 后,不管这个T是什么,接收到都被转化为LinkedHashMap,造成ClassCastException。
上网查,在这篇找到关键信息(这是百度快照):
You can refactor the code above to use exchange instead of postForObject, and use ParameterizedTypeReference to get a List<MyModelClass>
.
For example:
ParameterizedTypeReference<List<MyModelClass>> typeRef = new ParameterizedTypeReference<List<MyModelClass>>() {
};
ResponseEntity<List<MyModelClass>> responseEntity = restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<>(mvm), typeRef);
List<MyModelClass> myModelClasses = responseEntity.getBody();
结果使用RestTemplate.
exchange 代替
getForObject
后,问题确实解决了。