我读了很多关于使用TypeAdapter
和JsonSerializer/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/Deserializer
和A
编写了一个G
类。
我知道我可以使用链接:gsonbuilder.registerTypeAdapter(A_Adapter).registerTypeAdapter(G_Adapter)
,但是我需要使用更像TypeAdapterFactory
的东西来识别要使用的女巫适配器(指定与我使用的抽象类相对应的适配器类{ {1}})。
我还看到了java annotaion/reflection
类,但由于TypeAdapter
中缺少context
元素,因此实现起来太复杂了。
知道该怎么做吗?
答案 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。如果是类型适配器 以前是为指定的类型层次结构注册的,它是 覆盖。如果为类型中的特定类型注册了类型适配器 类型层次结构,将调用它而不是注册的那个 类型层次结构。