我正在将Java项目中的杰克逊库从版本2.4.6升级到最新版本(2.8.1)。
下面的AnnotatedField构造函数现在需要一个TypeResolutionContext类型的新参数

// v2.4.6
AnnotatedField(Field field, AnnotationMap annMap)

// v2.8.1
AnnotatedField(TypeResolutionContext contextClass, Field field, AnnotationMap annMap)


我阅读了API(https://fasterxml.github.io/jackson-databind/javadoc/2.8/com/fasterxml/jackson/databind/introspect/TypeResolutionContext.html),但是找不到如何获取此TypeResolutionContext。

只有两个类实现了此TypeResolutionContext(AnnotatedClass和TypeResolutionContext.Basic),但是它们似乎都没有合适的访问器方法来返回TypeResolutionContext。

有人知道我如何得到它吗?

最佳答案

AnnotatedField构造函数尽管是公共的,但不应直接使用-不能将其实例化。因此,如果TypeResolutionContext参数是空实现的,则在大多数情况下都可以正常工作,如下所示:

// lambda use to be more explicit (could be just null)
AnnotatedField annotatedField = new AnnotatedField( ( Type t) -> { return null; }, field, annMap);


(+信息有点脱离主题:PropertyNamingStrategy也不应在杰克逊项目之外使用。)

来源:https://groups.google.com/forum/#!topic/jackson-user/96wemvuUCHs

10-05 23:34