【发布时间】:2011-12-27 21:02:12
【问题描述】:
我有这样的课:
public class Wrapper<T> {
private String message;
private T data;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
我使用resttemplate如下:
...
Wrapper<Model> response = restTemplate.getForObject(URL, Wrapper.class, myMap);
Model model = response.getData();
...
但是它抛出一个:
ClassCastException
我读到:Issue when trying to use Jackson in java 但没有帮助。有一些与我的问题等相关的主题:https://jira.springsource.org/browse/SPR-7002 和https://jira.springsource.org/browse/SPR-7023
有什么想法吗?
PS:我的错误是:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to a.b.c.d.Model
我认为resttemplate无法理解我的泛型变量,也许它接受它作为一个对象而不是泛型T。所以它变成了一个LinkedHashMap。您可以从中阅读here 它说,在解释它的编组时:
JSON 类型 | Java类型
对象 | LinkedHashMap
【问题讨论】:
-
请把异常跟踪也放上去。
-
我想这个解决方案是在 3.2 SPR-7023
-
您找到解决方案了吗?我正在使用 ParameterizedTypeReference,虽然它在我传入 Map
时有效,但当我传入代表模型中 data的具体类时它不起作用。 -
您找到解决方案了吗??
标签: java spring generics jackson resttemplate