protoc编译proto文件之Java源码结构分析三(示例Demo)

来源:互联网 发布:淘宝买烟花 编辑:程序博客网 时间:2024/05/18 03:09

一、示例代码

project依赖Google官方lib:protobuf-java-2.5.0.jar 【下载】

package java_protos_main;import com.test.protocol.AddressProto;import com.test.protocol.PersonProto;/** * Created by junwei8 on 16/7/30. */public class ProtobufTest {    public static void main(String [] args){        //create person        byte [] person = createPerson();        System.out.println("==================");        //print person infomation        printPerson(person);    }    public static byte[] createPerson(){        System.out.println("begin create person...");        //创建message前需要先创建该message的Builder        AddressProto.Address.Builder addrBuilder = AddressProto.Address.newBuilder();        PersonProto.Person.Builder personBuilder = PersonProto.Person.newBuilder();        //利用Builder的setter方法给message fields赋值        addrBuilder.setProvince("北京");        addrBuilder.setMayor("北京");        personBuilder.setName("程序猿RD-XX");        personBuilder.setIdNum("RD-ID-NUM-XX-YY");        personBuilder.setAddress(addrBuilder);//给内部嵌套的message Address赋值        //利用Builder的build方法创建message实例        //把message转换为byte[]以利于实际使用中的网络传输        byte [] person = personBuilder.build().toByteArray();        System.out.println("finish create person success!");        return person;    }    public static void printPerson(byte [] personBytes){        try {            //利用byte[]创建message,实际使用中从InputStream接收byte[]创建message实例            PersonProto.Person person = PersonProto.Person.parseFrom(personBytes);            AddressProto.Address address = person.getAddress();            //调用message的getter方法            System.out.println("person name: " + person.getName());            System.out.println("person idnum: " + person.getIdNum());            System.out.println("come from province: " + address.getProvince());            System.out.println("come from mayor: " + address.getMayor());        } catch (com.google.protobuf.InvalidProtocolBufferException e) {            e.getMessage();        }    }}

二、代码分析

代码分析详见注释。

0 0
原创粉丝点击