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));

08-18 06:48