Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在尝试使用ObjectMapper生成方法时,如何将.class传递给ObjectMapper?_Java_Json_Spring_Generics_Generic Programming - Fatal编程技术网

Java 在尝试使用ObjectMapper生成方法时,如何将.class传递给ObjectMapper?

Java 在尝试使用ObjectMapper生成方法时,如何将.class传递给ObjectMapper?,java,json,spring,generics,generic-programming,Java,Json,Spring,Generics,Generic Programming,我有一个使用Spring编写的应用程序,ObjectMapper有问题。问题出在我试图泛化的方法中 我看起来像这样: public T getResponse(U senderJsonModel, T response) { headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity<String> entity = new HttpEntity<>(createSendRequest(se

我有一个使用Spring编写的应用程序,ObjectMapper有问题。问题出在我试图泛化的方法中

我看起来像这样:

public T getResponse(U senderJsonModel, T response) {
    headers.setContentType(MediaType.APPLICATION_JSON);
    HttpEntity<String> entity = new HttpEntity<>(createSendRequest(senderJsonModel), headers);
    String answer = restTemplate.postForObject(apiAddress, entity, String.class);
    try {
        response = mapper.readValue(answer, response.getClass());
    } catch (IOException e) {
        log.error("Error mapping JSON values to Object", e);
    }
    return response;
}
我尝试了
TypeReference(){}
,但我得到了:

java.lang.ClassCastException:无法将类java.util.LinkedHashMap强制转换为类com.app.infrastructure.sender.emailsender.response.EmailHttpResponse

在U下我传递一个EmailJsonModel类的实例,在T下我传递一个EmailHttpResponse类的实例


我找不到如何将.class传递给此方法的方法,是否有方法可以这样做

映射器变量是否已初始化且不为空?你用TypeReference(){}试过什么?传递一个
类clazz
而不是
T
。并像
T result=mapper.readValue(答案,clazz)那样使用它
然后
返回结果
@Jim_Ktr我很确定
TypeReference(){}
不会工作,因为运行时
T
将是
Object
。您的映射器变量是否已初始化且不为空?你用TypeReference(){}试过什么?传递一个
类clazz
而不是
T
。并像
T result=mapper.readValue(答案,clazz)那样使用它
然后
返回结果
@Jim_Ktr我很确定
TypeReference(){}
不会工作,因为
T
在运行时将是
对象
response = mapper.readValue(answer, response.getClass());