日韩性视频-久久久蜜桃-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大全日韩 | 精品中文字幕视频 | 国模吧一区二区三区 | 一级特黄aaa大片 | 婷婷99| 日本一区二区三区精品视频 | 国产一区二区在线精品 | 国内自拍第三页 | 日本不卡在线 | 美女隐私免费网站 | 黄在线免费观看 | 日日操日日爽 | 欧美高清视频一区二区三区 | 日韩黄色片在线观看 | 天天干天天舔天天操 | 国产 日韩 欧美 综合 | 国产精品视频1区 | 天天艹日日艹 | 欧洲美熟女乱又伦 | 国产精品ww| 精品孕妇一区二区三区 | 亚洲网站色| 在线观看成人网 | 精精国产xxxx视频在线 | 无码专区久久综合久中文字幕 | 夜夜爱爱 | 亚洲精品lv| 蜜臀av一区二区三区激情综合 | 成人毛片网| 波多野吉衣在线观看视频 | 欧美日韩免费一区二区 | 亚洲视频一区二区三区在线观看 | 亚洲av无码专区国产乱码不卡 | 亚洲妇女av| 怡红院久久 | 香蕉综合在线 | 欧美精品性视频 | 亚洲精品乱码久久久久久写真 | 欧美日韩激情 | 仙踪林av| 日韩一区二区三区三四区视频在线观看 | 日韩国产小视频 | 欧美日韩色综合 | 人人妻人人澡人人爽精品欧美一区 | 亚洲欧美偷拍一区 | 四虎免费在线观看 | 成人深夜在线 | 国产黄色的视频 | 在线成人亚洲 | 国产超级av在线 | 欧美亚洲一级 | 亚洲三区精品 | 国产经典三级在线 | 中文字幕乱码av | 在线观看二区 | 蜜臀av一区二区三区 | 激情丁香 | 天天干夜夜干 | 精精国产xxxx视频在线播放 | 欧美日韩国产一级片 | gogo人体做爰aaaa| 久久久久久久999 | 天天拍天天色 | 秘密基地动漫在线观看免费 | 国产一区二区 | www.youjizz.com中国| 国产精品主播一区二区 | 精品乱码一区二区三四区视频 | 国产高清在线免费 | 欧美性生交大片免费看app麻豆 | 超碰caoprom | 麻豆高清| 亚洲草草网 | 日韩久久精品视频 | 日批视频免费 | 精品国产制服丝袜高跟 | 欧美片一区二区三区 | 亚洲人精品 | 麻豆影视免费观看 | 在线观看成人 | 国产无码精品视频 | www.69视频| 亚洲男人天堂2019 | 日本三级久久 | 亚洲精品成人在线视频 | 久久久96人妻无码精品 | 国产精品九九视频 | 国产三级午夜理伦三级 | 欧美成人秋霞久久aa片 | 亚洲视频在线免费播放 | 一级黄色片一级黄色片 | 成人欧美一区二区三区小说 | 正在播放亚洲 | 欧洲一区二区在线 |