1.基本類型(括號內爲對應的Java類型)
bool(boolean): 布爾類型(TRUE or FALSE)
byte(byte): 8位帶符號整數
i16(short): 16位帶符號整數
i32(int): 32位帶符號整數
i64(long): 64位帶符號整數
double(double): 64位浮點數
string(String): 採用UTF-8編碼的字符串
2.特殊類型(括號內爲對應的Java類型)
binary(ByteBuffer):未經過編碼的字節流
3.struct(結構體)
struct定義了一個很普通的OOP對象,但是沒有繼承特性。
struct UserProfile {
1: i32 uid,
2: string name,
3: string blurb
}
如果變量有默認值,可以直接寫在定義文件裏:
struct UserProfile {
1: i32 uid = 1,
2: string name = "User1",
3: string blurb
}
4.容器
Thrift還支持以下容器類型:
list(java.util.ArrayList);
set(java.util.HashSet);
map(java.util.HashMap);
Thrift容器與類型密切相關,它與當前流行編程語言提供的容器類型相對應,採用java泛型風格表示的。Thrift提供了3種容器類型:
List<t1>:一系列t1類型的元素組成的有序表,元素可以重複
Set<t1>:一系列t1類型的元素組成的無序表,元素唯一
Map<t1,t2>:key/value對(key的類型是t1且key唯一,value類型是t2)。
容器中的元素類型可以是除了service意外的任何合法thrift類型(包括結構體和異常)。
用法如下:
struct Node {
1: i32 id,
2: string name,
3: list<i32> subNodeList,
4: map<i32,string> subNodeMap,
5: set<i32> subNodeSet
}
包含定義的其他Object:
struct SubNode {
1: i32 uid,
2: string name,
3: i32 pid
}
struct Node {
1: i32 uid,
2: string name,
3: list<subNode> subNodes
}