为了账号安全,请及时绑定邮箱和手机立即绑定

gson的多态性

gson的多态性

猛跑小猪 2019-09-21 11:18:36
我在使用Gson反序列化json字符串时遇到问题。我收到一系列命令。该命令可以是start,stop或其他类型的命令。我自然具有多态性,并且start / stop命令从command继承。如何使用gson将其序列化回正确的命令对象?似乎我只获得基本类型,即声明的类型,而从未获得运行时类型。
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

为了扩展他的示例,可以通过以下更改使他的适配器类通用以适用于所有类型的对象(不仅仅是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>());

        ....

}


查看完整回答
反对 回复 2019-09-21
  • 3 回答
  • 0 关注
  • 510 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信