【发布时间】:2017-06-04 20:27:08
【问题描述】:
我在Thrift 中定义了一组结构。从概念上讲,其中一些结构是公共父类的子类。由于Thrift不支持结构继承,所以我使用以下策略来定义结构:
示例
说A 和B 是父type P 的子类型。以下是我的节俭定义来表示:
struct P {
1: i32 childType,
2: list<byte> payload
}
struct A {
1: i32 x
}
struct B {
1: i32 y
}
type A and B 的对象被序列化为type P 的记录(payload 字段将存储对象的序列化版本,childType 的值将指示序列化的有效负载是否为type A or B)。在反序列化期间,childType 字段的值将指示需要如何反序列化 payload。
但是,当使用 Java 或 Scala 等面向对象的语言编写代码时,这种方法会带来困难。例如,在返回type P 对象的函数中,我无法返回type A 或type B 的结果。
问题
(i) 有没有推荐的方法来处理这个问题?即,如何协调Thrift 中缺少继承与Java/Scala 利用继承的代码?
提前致谢。
【问题讨论】:
标签: java scala oop inheritance thrift