【发布时间】:2020-02-10 12:58:36
【问题描述】:
我想为javax.ws.rs.client.SyncInvoker写一个代理:
@Override
public <T> T get(GenericType<T> responseType) {
String payload = delegate.get(String.class);
// very important logic...
return objectMapper.readValue(payload, responseType); // fix this
}
当然,上面的代码不能编译,因为杰克逊对来自 jax-rs 的GenericType 一无所知。看来我可以使用以下方法之一:
public <T> T readValue(String content, TypeReference valueTypeRef)
public <T> T readValue(String content, JavaType valueType)
但我很困惑找到将GenericType 转换为TypeReference 或JavaType 的正确方法。
【问题讨论】:
-
JavaType javaType = objectMapper.constructType(responseType.getType())呢? -
@jannis omg 非常感谢你。我受苦了一整天,解决办法就是这么简单……:)