给定一个任意Class
对象,确定向 Jackson 注册的该类的子类型的最佳方法是什么?
例如,这是一个简单的例子,其中 classesLion
和Penguin
是 的子类型Animal
:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME)
@JsonSubTypes({
@JsonSubTypes.Type(Lion.class),
@JsonSubTypes.Type(Penguin.class)})
public static abstract class Animal {}
@JsonTypeName("Lion")
public static class Lion extends Animal {}
@JsonTypeName("Penguin")
public static class Penguin extends Animal {}
我的梦想功能看起来像:
List<Class> getSubTypeClasses(Class c) {...}
哪里getSubTypeClasses(Animal.class)
会返回Lion
和Penguin
。
如果 Jackson API 不提供获取此信息的便捷方法,我将手动阅读注释,但如果知道与任何 AnnotationIntrospector
实现兼容的技术会很高兴。