option java_package = "com.protobuftest.protobuf";
option java_outer_classname = "PersonProbuf";
message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phone = 4;
message CountryInfo {
required string name = 1;
required string code = 2;
optional int32 number = 3;
}
}
message AddressBook {
repeated Person person = 1;
}
protoc.exe --java_out=. ./msg.proto
@org.junit.Test
public void testProBuf() throws InvalidProtocolBufferException{
Builder builder = PersonProbuf.Person.newBuilder();
builder.setName("test_name");
builder.setId(1);
builder.setEmail("test@test.com");
builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("131111111").setType(PersonProbuf.Person.PhoneType.MOBILE));
builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("011111").setType(PersonProbuf.Person.PhoneType.HOME));
Person person = builder.build();
byte[] buf = person.toByteArray();
Person person2 = PersonProbuf.Person.parseFrom(buf);
Assert.assertTrue(person2.getEmail().equals("test@test.com"));
Assert.assertTrue(person2.getPhone(0).getNumber().equals("131111111"));
Assert.assertEquals(person2.getPhone(1).getNumber(), "011111");
}
<dependency> <groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>2.4.1</version></dependency>