如何使用嵌套抽象类处理GSON?

时间:2017-10-18 12:50:05

标签: java gson abstract-class

我读了很多关于使用TypeAdapterJsonSerializer/Deserializer来处理抽象类的问题,我的问题是在嵌套抽象类的情况下。 让我们说这个课程:

abstract class A {
  String content;
}

abstract class G {
  String otherContent;
}

class B extends A {
  G g;
}

class C extends A {
  String someThing;
}

class H extends G {
  Integer num;
}

我已经为每个抽象类JsonSerializer/DeserializerA编写了一个G类。 我知道我可以使用链接:gsonbuilder.registerTypeAdapter(A_Adapter).registerTypeAdapter(G_Adapter),但是我需要使用更像TypeAdapterFactory的东西来识别要使用的女巫适配器(指定与我使用的抽象类相对应的适配器类{ {1}})。 我还看到了java annotaion/reflection类,但由于TypeAdapter中缺少context元素,因此实现起来太复杂了。

知道该怎么做吗?

1 个答案:

答案 0 :(得分:0)

要为def highest_product(list_of_ints): if len(list_of_ints) < 3: return None sorted_ints = sorted(list_of_ints) return max(sorted_ints[0] * sorted_ints[1] * sorted_ints[-1], sorted_ints[-3] * sorted_ints[-2] * sorted_ints[-1]) 类(A + A + B)的每个子类型使用相同的序列化程序和解析器,您可以使用C 来自documentation

  

为Gson配置自定义序列化或反序列化   继承类型层次结构。这种方法结合了a的注册   TypeAdapter,JsonSerializer和JsonDeserializer。如果是类型适配器   以前是为指定的类型层次结构注册的,它是   覆盖。如果为类型中的特定类型注册了类型适配器   类型层次结构,将调用它而不是注册的那个   类型层次结构。