加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Apache Thrift中的通用对象

发布时间:2020-12-15 05:00:51 所属栏目:Java 来源:网络整理
导读:我想知道我是否可以使用IDL语言在Apache Thrift中定义“通用对象”,类似 Java中的“Object”类. 我需要发送任何类型的对象列表,但我不知道如何在file.thrift中定义它 像这样: struct{ 1: listobject listObjects;} 要么 struct{ 1: list? listObjects;} 解
我想知道我是否可以使用IDL语言在Apache Thrift中定义“通用对象”,类似 Java中的“Object”类.

我需要发送任何类型的对象列表,但我不知道如何在file.thrift中定义它

像这样:

struct
{
   1: list<object> listObjects;
}

要么

struct
{
   1: list<?> listObjects;
}

解决方法

Apache Thrift不支持结构继承或自引用结构.这就是你想要做的事情,直接传递多态列表是不可能的.有办法解决这个问题,例如将对象序列化为二进制文件,然后传递二进制文件列表,在另一端反序列化它们.

struct abc {
    1: list<binary> myList,}

所有Apache Thrift结构都有读写方法,您可以使用这些方法将它们序列化为内存缓冲区(TMemoryBuffer),然后您可以将其用作列表的二进制对象.另一种选择可能是使用联合.

union myTypes {
    1: double dbl
    2: i64 bigInt
    3: SomeOtherStruct sos
}

struct abc {
    1: list<myTypes> myList,}

此方法创建myTypes联合类型的列表,但联合可以容纳您喜欢的任何IDL定义类型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读