1
我正在尝试在Google协议缓冲区中使用扩展名。我有一个“主要”原始文件和其他几个“扩展”主要文件的原始文件。在Protobuf中写入和读取重复的扩展字段
在我的java代码中,我不是100%确定如何正确添加到重复消息。当我运行我编写的java代码时,toString()方法显示添加了扩展属性,但它不能正确解码(可能是因为我对添加的Collar对象运行了build()调用)。
我应该如何正确地向原型文件中的扩展项添加重复元素?
File1.proto
package protocol_buffer;
option java_outer_classname = "PetClass";
message Pet {
optional string pet_name = 1;
extensions 100 to 199;
}
File2.proto
import "File1.proto";
option java_outer_classname = "CollarClass";
message Collars {
optional string collar_type = 1;
optional string collar_color = 2;
}
extend pet {
repeated Collars collar = 100;
}
MyFile.java
Pet pet = Pet.newBuilder()
.setPetName("Fido")
.addExtension(CollarClass.collar,
Collar.newBuilder()
.setCollarType("round")
.setCollarColor("brown")
.build()
)
.build();
System.out.println(pet.toString());