【发布时间】:2016-12-17 21:07:54
【问题描述】:
我有很多这样的 Java bean 接口:
public interface Dog
{
String getName();
void setName( final String value );
}
我还像这样自动生成 bean 实现:
public final class DogImpl implements Dog
{
public String getName()
{
return m_name;
}
public void setName( final String value )
{
m_value = value;
}
private volatile String m_value;
}
ObjectMapper 可以完美运行,除非我开始像这样嵌套这些 bean:
public interface Dog
{
String getName();
void setName( final String value );
Dog getParent();
void setParent( final Dog value );
}
我收到此错误:
抽象类型要么需要映射到具体类型,要么需要自定义反序列化器,要么包含额外的类型信息
之所以抱怨,是因为 bean 定义是一个接口,而不是具体类型。我的问题是,我是否有办法通过模块或其他方式为 ObjectMapper 定义接口类型到具体类型的映射?
具体来说,我可以得到一个 Map, 类> api 类型到实现具体类型,但不知道如何“给这个”给 ObjectMapper,因此它了解如何从 api 类型中查找具体类型,以便实例化它们。我该如何做到这一点?
【问题讨论】:
标签: jackson objectmapper