我有一个通用函数的问题。我想使用一个函数,首先将特定的类/类型分配给它,从 rest 响应中生成相应的结果,然后返回它。
public class TimerService {
[...]
public <T extends myObjInterface> RestMessageContainer<T> send(String endpointPath, Map<String, String> parameters, Class<T> clazz) {
[...]
Response response = webTarget.request(MediaType.APPLICATION_JSON_TYPE).get();
RestMessageContainer<T> container = response.readEntity(new GenericType<RestMessageContainer<T>>() {});
return container;
}
}
public class RestMessageContainer<T extends myObjInterface> {
[...]
@XmlAttribute(name = "data")
private List<T> data;
[...]
}
我在运行时收到以下错误消息。
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.test.myObjInterface` (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
14:47:41,982 ERROR [stderr] (EJB default - 2) at [Source: (org.jboss.resteasy.client.jaxrs.internal.ClientResponse$InputStreamWrapper); line: 3, column: 14] (through reference chain: com.test.RestMessageContainer["data"]->java.util.ArrayList[0])
这个错误是针对以下这行代码输出的:RestMessageContainer<T> container = response.readEntity(new GenericType<RestMessageContainer<T>>() {});
我的做法是否正确,或者我应该如何解决这个问题?