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
- protoc编译proto文件之Java源码结构分析三(示例Demo)
- protoc编译proto文件之Java源码结构分析四(编译proto原型文件)
- protoc编译proto文件之Java源码结构分析一(addr.proto)
- protoc编译proto文件之Java源码结构分析二(person.proto)
- GRPC编译工具protoc-gen-grpc-java编译proto文件的方式
- Caffe源码中caffe.proto文件分析
- Hadoop 源码编译-protoc安装
- Mac:protobuf proto文件编译为Java文件
- CTP源码分析4 CTP链路质量估计层结构及源码分析(三)----源码头文件解读
- Tachyon源码结构分析(三)
- Tachyon源码结构分析(三)
- 运行protoc 把.proto文件生成.pb.go文件,遇到的问题以及解决方案
- protoc编译
- Java 源码分析(三)
- 在mac上使用protoc-gen-lua从proto文件生成lua
- 分析源码编译目录结构
- Java Design Demo--多线程(三)多线程异步示例
- SparkStreaming的WordCount示例及源码分析(三)
- java面向对象
- 搜索引擎(一)-- 初识
- Hibernate1
- QT工程集成配置
- Light 1078 Integer Divisibility (取模运算)
- protoc编译proto文件之Java源码结构分析三(示例Demo)
- Hibernate2
- iOS花式更改系统自带UINavigationBar导航栏样式,让你拥有更纯净,更强自定义的导航栏!!!It's amazing
- GMAP 开源代码如何编译
- poj 3384
- 剑指offer 代码实现 C++
- DataStructure_1.Introduction
- 「网络暴力」离我们到底有多远?
- 最长上升子序列