gson的多态性

我在使用Gson反序列化json字符串时遇到问题。我收到一系列命令。该命令可以是start,stop或其他类型的命令。我自然具有多态性,并且start / stop命令从command继承。

如何使用gson将其序列化回正确的命令对象?

似乎我只获得基本类型,即声明的类型,而从未获得运行时类型。


猛跑小猪
浏览 511回答 3
3回答

汪汪一只猫

为了扩展他的示例,可以通过以下更改使他的适配器类通用以适用于所有类型的对象(不仅仅是IAnimal):class InheritanceAdapter<T> implements JsonSerializer<T>, JsonDeserializer<T>{....    public JsonElement serialize(T src, Type typeOfSrc, JsonSerializationContext context)....    public T deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException....}在测试类中:public class Test {    public static void main(String[] args) {        ....            builder.registerTypeAdapter(IAnimal.class, new InheritanceAdapter<IAnimal>());        ....}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java