任何人都可以帮我理解Apache中的int[]
和Apache Thrift中的i32
(NumericDataArray
)之间的区别吗?当后者应该使用?另外,我们是否有类似i32
的字符串?
答案 0 :(得分:2)
基本类型
选择基本类型的目的是简单明了 而不是丰富,专注于所有可用的关键类型 编程语言。
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 List
,Set
和Map
。
因此,如果您正在使用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