我有一个jax-rs 2.0客户端,它试图读取类型为t的通用列表。而不是创建类型为t的列表,而是创建LinkedHashMap类型的列表
public static <T> List<T> getList(Builder reqeustBuilder, Class<T> t) {
Response response = reqeustBuilder.get();
List<T> responseEntityList = response.readEntity(new GenericType<List<T>>(){});
return responseEntityList;
}
我在这里找到了一个解决方法:Jackson generic json to List<T> converter method does not work但是我想弄清楚为什么上面的代码不起作用以及是否有办法解决它。
更新 我在这里找到了另一个解决方案:Dropwizard deserializing generic list from JerseyClient
我想知道是否有更简单的事情。我不明白为什么在这种情况下T == Object而不是传递的类型。
答案 0 :(得分:4)
首先,你有一个错字。
public static <T> List<T> getList(Builder reqeustBuilder, Class<T> t) {
应该是
public static List<T> getList(Builder reqeustBuilder, Class<T> t) {
其次,返回类型LinkedHashMap
的原因是因为这是函数readEntity
在以下行中返回的数据结构类型:
List<T> responseEntityList = response.readEntity(new GenericType<List<T>>(){});