Я использую Jackson 1.9.x. Придерживаясь примерами "Животные", вот что я хотел бы сделать:
Скажем, у меня есть класс Animal:
public class Animal {
private String type;
// accessors
}
public class Mammal extends Animal {
private String diet;
// accessors
}
public class Bird extends Animal {
private boolean tropical;
// accessors
}
Я хотел бы иметь возможность сделать что-то вроде этого (где я сопоставляю несколько подтипов одному классу и еще несколько к другому классу):
@JsonTypeInfo(use = Id.NAME, include = As.PROPERTY, property = "type")
@JsonSubTypes({@JsonSubTypes.Type(value = Mammal.class, name = "Dog"),
@JsonSubTypes.Type(value = Mammal.class, name = "Cat"),
@JsonSubTypes.Type(value = Bird.class, name = "Dodo"},
@JsonSubTypes.Type(value = Bird.class, name = "Cockatoo"})
public class Animal {
}
То, что я сейчас вижу, - это то, что Джексон узнает только отношение "Собака к Млекопитающему" и "Додо-птица". Это связано с тем, что StdSubtypeResolver._collectAndResolve() позволяет одному и тому же классу регистрироваться один раз (из-за реализации NamedType.equals()).
Есть ли обходной путь к проблеме, которую я вижу?