小编典典

Jackson-反序列化JSON字符串-TypeReference与TypeFactory.constructCollectionType

java

类型1(docs链接):

List<SomeClass> someClassList = mapper.readValue(jsonString, typeFactory.constructCollectionType(List.class, SomeClass.class));

类型2(docs链接):

List<SomeClass> list = mapper.readValue(jsonString, new TypeReference<List<SomeClass>>() { });

尽管以上两种类型都能完成任务,但这些实现之间有什么区别?


阅读 803

收藏
2020-12-03

共1个答案

小编典典

构造之后JavaType,两者都调用相同的反序列化功能,因此唯一的区别是泛型类型的处理方式。

第二个是完全静态的,因此类型必须在编译类型中是已知的,并且不能改变。因此,它类似于使用基本Class文字。

第一个是动态的,因此可以用于构造因其参数设置而变化的事物。

就我个人而言,我更喜欢在所有情况下都采用第一种方法(它避免了创建另一个匿名内部类),但是第二种方法可能更具可读性。

2020-12-03