Java通常会在编译时擦除Generics
数据,但是有可能获取该信息(Jackson ObjectMapper
表现得很好)。
我的问题:我有一个具有列表属性的类:
public class User {
public List<Long> listProp;//it is public only to keep the example simple
}
如何获取正确的
TypeReference
(或JavaType
?),以便可以将JSON字符串以编程方式映射到正确的列表类型,并具有Class
类(User.class)的实例和属性名称(listProp)?我的意思是:TypeReference typeReference = ...;//how to get the typeReference?
List<Long> correctList = om.readValue(jsonEntry.getValue(), typeReference);//this should return a List<Long> and not eg. a List<Integer>
最佳答案
您是否尝试过映射器的constructType方法?
Type genericType = User.class.getField("listProp").getGenericType();
List<Long> correctList = om.readValue(jsonEntry.getValue(), om.constructType(genericType));