Google Protocol Buffer使用
关键语义
语义 | 名称 |
---|
emun | 枚举类 |
message | java类定义 |
optional,require,repeated | 数据类型,对象引用 |
import | 引用其他proto文件 |
package | 对应生成java类的包名 |
optional java_package | 定义编译后产生的文件所在包结构的,即编写生成后的java文件所在的目录(多层次结构) |
optional java_outer_classname | 编译生成的java文件名称 |
sevice | 暂时不知道功能,后续查阅后补充 |
类型转换对应关系
protoc类型 | Java类型 |
---|
double | double |
float | float |
int32 | int |
int64 | long |
uint32 | int |
uint64 | long |
sint32 | int |
sint64 | long |
fixed32 | int |
fixed64 | long |
sfixed32 | int |
sfixed64 | long |
bool | boolean |
string | String |
bytes | ByteString |
编译命令
protoc --proto_path=IMPORT_PATH --cpp_out=DST_DIR --java_out=DST_DIR --python_out=DST_DIR path/to/file.proto
--proto_path=IMPORT_PATH 默认当前目录
--cpp_out 生成的c++文件目录
--java_out 生成的java文件目录
--pytho_out 生成的python文件目录
总结
protocol buffer的使用还是相对简单点,唯一麻烦的就是多了一个预编译的过程,将.proto文件转换成java文件或c++文件。但有的时候,这些过程是必须的。