Apache Thrift中Java的int []和i32有什么区别

时间:2013-08-14 16:47:38

标签: java arrays thrift

任何人都可以帮我理解Apache中的int[]和Apache Thrift中的i32NumericDataArray)之间的区别吗?当后者应该使用?另外,我们是否有类似i32的字符串?

2 个答案:

答案 0 :(得分:2)

来自Thrift Types

  

基本类型

     

选择基本类型的目的是简单明了   而不是丰富,专注于所有可用的关键类型   编程语言。

bool: A boolean value (true or false)
byte: An 8-bit signed integer
i16: A 16-bit signed integer
i32: A 32-bit signed integer
i64: A 64-bit signed integer
double: A 64-bit floating point number
string: A text string encoded using UTF-8 encoding

所以i32是一个32位有符号整数,映射到java int

你在thrift中没有数组,但是容器类型:

  

容器

     

Thrift容器是通常映射到的强类型容器   大多数编程中使用和常用的容器类型   语言。

     

有三种容器类型:

     

list:元素的有序列表。转换为STL向量,Java   ArrayList,脚本语言中的本机数组等。

     

set:一组无序的独特元素。转换为STL集,Java   HashSet,用Python等设置。注意:PHP不支持集合,所以它是   处理类似于List

     

map:值严格唯一键的映射。转换为STL映射,Java HashMap,PHP关联数组,   Python / Ruby字典等。提供默认值时,类型   映射没有明确修复。自定义代码生成器指令   已被添加以允许替换各种自定义类型   目的语言。

     

容器元素可以是任何有效的Thrift类型。

这些容器映射到相应的Java ListSetMap

因此,如果您正在使用thrift并且需要传输int - 值的集合,那么您将使用int32类型的列表容器,如list<i32>,这将导致java端的java.util.ArrayList<Integer>

无需担心String:thrift中有一个基类型string,它映射到java java.lang.String。所以你只需在thrift中定义一个string,你生成的java代码中就会有java.lang.String

答案 1 :(得分:0)

int []是一个简单的数组,通常用于做简单的事情,例如。存储临时数据。

i32它是第三部分库,就像William说的那样。

如果您没有非常具体的问题,我建议您使用int [],但如果您需要使用i32,可以查看以下链接:http://people.apache.org/~thejas/thrift-0.9/javadoc/org/apache/thrift/protocol/TType.html