日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

thrift如何定义Java中的object类型

發(fā)布時間:2023/12/29 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 thrift如何定义Java中的object类型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • thrift如何定義Java中的Object類型
    • 方法一:使用聯(lián)合(union)
    • 方法二:使用特殊類型(binary)
    • 終極方法:序列化

thrift如何定義Java中的Object類型

由于thrift的類型沒有類似java的Object類型,當(dāng)我們想用thrift來定義一個具體類型不確定的對象時候,會有不知如何定義的困擾。

方法一:使用聯(lián)合(union)

union的特點是結(jié)構(gòu)中的每個field之間的關(guān)系是互斥的,即只能有一個field被使用被賦值。所以可以根據(jù)我們未知類型對象的類型范圍定義一個union

union JavaObjectArg {1: i32 int_arg;2: i64 long_arg;3: string string_arg;4: bool bool_arg;5: binary binary_arg;6: double double_arg; }struct OneResp {1: list<JavaObjectArg> myList, }

union的使用方式
可以通過生成的JavaObjectArg.java中的standardSchemeReadValue方法獲取,對應(yīng)的類型

protected Object standardSchemeReadValue(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TField field) throws org.apache.thrift.TException

或者,通過對應(yīng)類型的get方法獲得結(jié)果。例如獲取int類型的結(jié)果

public int getInt_arg() {if (getSetField() == _Fields.INT_ARG) {return (Integer)getFieldValue();} else {throw new RuntimeException("Cannot get field 'int_arg' because union is currently set to " + getFieldDesc(getSetField()).name);}}

方法二:使用特殊類型(binary)

binary:是未編碼的字節(jié)序列
類似,當(dāng)我們想定義一個List時

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

生成后,會變成ByteBuffer類型,根據(jù)需要的類型對應(yīng)進(jìn)行轉(zhuǎn)換即可。

public List<ByteBuffer> myList;

終極方法:序列化

終極方案當(dāng)然還是先把包含Object類型的對象或者集合,先序列化成一個jsonString。此時,在thrift中定義成string即可。使用時,由調(diào)用端將這個string對象根據(jù)約定的對象反序列化后既可獲得需要的類型。
以下面的接口為例,通過Jackson序列化。

service ITMuouThriftService {string testScene(string param); }

服務(wù)端序列化:

Map<String, Object> decisionMap = Maps.newHashMapWithExpectedSize(1); decisionMap.put("res": 1); return new ObjectMapper().writeValueAsString(decisionMap)

調(diào)用端反序列化:

TypeReference<Map<String, Object>> MAP_TYPE_REF = new TypeReference<Map<String, Object>>() { }; String res = muouThriftService.testScene("test"); Map<String, Object> resultMap = new ObjectMapper().readValue(res, MAP_TYPE_REF);

git地址:

總結(jié)

以上是生活随笔為你收集整理的thrift如何定义Java中的object类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产一区高清 | 日韩欧美自拍 | 免费观看的av网站 | 亚洲欧美日韩一区二区三区在线观看 | 男女搞黄网站 | 成人一级视频在线观看 | 日本福利社 | jzjzjz欧美丰满少妇 | 五月天国产精品 | 91精品国自产在线偷拍蜜桃 | 日韩午夜小视频 | 日本老肥婆bbbwbbbwzr | 69人人| 高清在线一区二区 | 免费一二三区 | 淫人网 | 国产中文字幕在线播放 | 国产精品人人妻人人爽 | 米奇狠狠干 | 波多野结衣福利 | 精品乱码一区二区三四区视频 | 成人午夜激情网 | 成人在线观看91 | 热久久久久 | 日本乱码一区 | 波多野结衣免费视频观看 | aaa国产 | 午夜院线| 日韩aa视频 | 欧美日韩性生活视频 | 97香蕉| 国产一区2区 | 欧美xx在线 | yjizz视频网 国产乱人对白 | 毛片h| 日韩短视频 | 黄色在线网站 | 新呦u视频一区二区 | 成人91在线| av导航站| 久久人人干 | 中文字幕在线永久 | 在线播放一级片 | 天天综合天天做天天综合 | 日本囗交做爰视频 | 一本色道久久综合狠狠躁的推荐 | 日本全黄裸体片 | 黄色大片免费网站 | 男生女生插插插 | 天天做天天爱天天做 | 丰满女邻居的色诱4hd | 国产日产欧洲无码视频 | 蜜桃成熟时李丽珍在线观看 | 91成人免费版 | 综合国产精品 | 青草福利| 动漫美女被x | 日日噜噜噜夜夜爽爽狠狠 | 欧美日本高清视频 | 热久久影院 | 3d动漫精品啪啪一区二区三区免费 | 精品国产污污免费网站入口 | 成人看片 | 91在线精品观看 | 欧美精品久久久久 | 福利姬在线观看 | 国产一区二区三区影视 | 欧美涩色 | 88国产精品 | 欧美黄色一级视频 | av集中营 | 黄色片中国| 欧美操女人 | 国产精品视频网站 | 亚洲熟女乱综合一区二区三区 | 欧美日韩亚| 狠狠操人人干 | 撸啊撸av | 激情六月婷| 久草成人在线视频 | 国产成人欧美一区二区三区的 | 亚洲av无码日韩精品影片 | 欧美黄色图片 | 天堂网在线看 | 久久精品一日日躁夜夜躁 | 日韩一区二区三区在线 | 2024国产精品| 狠狠撸在线视频 | 亚洲成人va| 国产美女精品人人做人人爽 | 青青草精品在线 | 精品国产乱码一区二区三 | 久久久久区 | 美女mm131爽爽爽免费动视频 | 男女黄色网 | 欧美日韩久久婷婷 | 久久久精品综合 | 久久久久亚洲av成人无码电影 | 国产精品 欧美 日韩 |