我的例子是为了证明Protocol Buffer良好的跨语言特性。
例子由两个程序构成,一个是C++程序,负责将对象User序列化到文件中。另一个是Java程序,负责从文件中反序列化成User对象。
下面的图形反映了两个程序以及Protocol Buffer之间的关系。
先设计User对象的proto文件,Protocol Buffer编译器要利用它生成C++文件和Java文件。
package sample;
option java_package = "org.freebird.sample";
option java_outer_classname = "UserProto";
message User {
required string name = 1;
required string email = 2;
}
对于产生的C++文件,User类 位于namespace sample中
对于产生的Java文件, 编译器创建了一个类 UserProto ,package名称为 org.freebird.sample, UserProto 类有一个公有内部静态类 User
假定sample.proto文件位于template目录,目录下我创建了一个build.sh文件:
rm -rf c++
mkdir c+