У меня есть несколько интерфейсов Java Bean, как это:Как программно настроить ObjectMapper в Java/Jackson для создания Java-компонентов?
public interface Dog
{
String getName();
void setName(final String value);
}
Я также автоматически генерировать реализации фасоли, как это:
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 работает прекрасно, за исключением, когда я начала гнездования эти бобы, как это:
public interface Dog
{
String getName();
void setName(final String value);
Dog getParent();
void setParent(final Dog value);
}
Я получаю эту ошибку:
абстрактные типы либо должны быть сопоставлены с конкретными типами, имеют пользовательский десериализатор, либо содержат дополнительную информацию о типе.
Он жалуется, потому что определение bean - это интерфейс, а не конкретный тип. Мой вопрос в том, есть ли способ определить отображение типов интерфейса для конкретных типов для ObjectMapper через модуль или что-то еще?
В частности, я могу получить карту < Класс <? >, Класс <? >> типа api для конкретного типа реализации, но не имеют понятия, как «дать это» ObjectMapper, чтобы он понимал, как искать конкретные типы из типов api, чтобы он мог их создавать. Как это сделать?