杰克逊要求在无参数构造函数上使用public
修饰符,而jdk8的Optional
仅提供静态方法。有哪些可行的解决方法?一般来说,如果我必须使用第三方库提供遵循此模式的类,我该怎么办?
答案 0 :(得分:1)
不,杰克逊不需要公开的非参数构造函数;任何访问级别(甚至private
)都可以。但如果没有提供自定义反序列化器,它确实需要一个无参数构造函数。
新类型需要什么,通常是扩展模块。实际上有计划添加一个“JDK8模块”,因为核心杰克逊当前只需要1.6,并且基线不太可能在不久的将来移动。但是添加对新类型的支持应该相对容易:例如,Jackson Guava数据类型模块(https://github.com/FasterXML/jackson-datatype-guava)增加了对Guava optional
的支持。您可以在此期间从那里复制反序列化器,通过您定义的SimpleModule
使用它。