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());