先上个例子看看


package proto.test2;  

option java_package = "proto.test";
option java_outer_classname = "RequestBPO";

option optimize_for = SPEED;

message Request{
optional int32 num = 1;   required string msg = 2; repeated Keyval maps = 3 ; optional bool right = 4 ; } message Keyval{ optional string key = 1; optional string value = 2; }

使用protoc.exe --java_out=src\  src\request.proto 编译


即可在 src\proto\test下生成 RequestBPO 类  

为什么不是proto.test2呢,因为 option java_package 的优先级比package的优先级要高

如果没有option java_package 那么就会在 proto.test2下生成。

文件里面要定义消息格式  例: message SomeMessage{...} 这个样子,可以定义多个,也可以嵌套定义

SomeMessage是最终生成BPO中的request message的类名

下面看message中支持的类型   定义属性格式是这个样子滴: optional|required|repeated   type  name = order;

第一个是描述符只有那三种, type有 double,float,int32对应java中的double,float,int

还有string对应string, bool对应boolean, repeated则对应为list 

名称随便起,貌似没有啥关键字。 最后这个是order,必须大于0 应该是在协议中传输时有用吧


上面repeated Keyval相当于自定义类型了。还有嵌套定义的情况,我没细看。等用到了再来更新。