【发布时间】:2020-03-18 22:24:39
【问题描述】:
我有一些多态 POJOS,我知道我可以利用 Jackson 的多态性:
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, property="message_type")
@JsonSubTypes({
@JsonSubTypes.Type(name = "repo_item", value = Item.class),
@JsonSubTypes.Type(name = "repo_folder", value = Folder.class)
})
public abstract class Node {
UUID id;
String name;
@JsonProperty("message_type")
public abstract String _getMessageType();
}
public class Item extends Node {
String properties;
@Override
public String _getMessageType() { return "repo_node"; }
}
public class Folder extends Node {
String color;
@Override
public String _getMessageType() { return "repo_folder"; }
}
这很好用。但是,我在编译时并不知道 Node 的所有子类。我从 IDL 定义生成代码,生成的类是 Node.js 的子类型。如何在运行时注册 @JsonSubTypes 注释的等效项?
【问题讨论】:
标签: jackson-databind