博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java protobuf框架使用向导
阅读量:6210 次
发布时间:2019-06-21

本文共 2441 字,大约阅读时间需要 8 分钟。

hot3.png

高效的、可扩展的对结构化数据进行编码的格式规范

下面介绍的是使用Java ProtoBuf的基本步骤:

1. ,选择其中的win版本下载

2.下载一个protobuf-java-2.4.1.jar文件(注意,要与你刚才下的proto.exe版本相同,否则可能出现编译通不过现象)

3.在proto.exe同级目录,编写一个msg.proto文件:

package tutorial;   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;   }

4.使用如下命令编译这个文件:

5.将生成的ProtoBufferPractice.java文件引入eclipse

6.把下载的protobuf-java-2.4.1.jar也引入工程

7.使用方法:

import java.util.List;import com.google.protobuf.InvalidProtocolBufferException;import com.protobuftest.protobuf.PersonProbuf;import com.protobuftest.protobuf.PersonProbuf.Person;import com.protobuftest.protobuf.PersonProbuf.Person.PhoneNumber;import com.protobuftest.protobuf.PersonProbuf.Person.PhoneNumberOrBuilder;import com.protobuftest.protobuf.PersonProbuf.Person.PhoneType;public class ProtoBufTest {	/**	 * @param args	 */	public static void main(String[] args) {		// TODO Auto-generated method stub		PersonProbuf.Person.Builder builder = PersonProbuf.Person.newBuilder();		builder.setEmail("kkk@email.com");		builder.setId(1);		builder.setName("TestName");		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();		try {			Person person2 = PersonProbuf.Person.parseFrom(buf);			System.out.println(person2.getName() + ", " + person2.getEmail());			List
lstPhones = person2.getPhoneList(); for (PhoneNumber phoneNumber : lstPhones) { System.out.println(phoneNumber.getNumber()); } } catch (InvalidProtocolBufferException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(buf); }}

源文档 <> 

原文链接:

转载于:https://my.oschina.net/hanzhankang/blog/201237

你可能感兴趣的文章
Java ConcurrentModificationException异常原因和解决方法[转载]
查看>>
Example004自动关闭的广告窗口
查看>>
换肤导致内存溢出
查看>>
BZOJ 2693 jzptab
查看>>
LINQ语句中的.AsEnumerable() 和 .AsQueryable()的区别【转】
查看>>
C#后期绑定调用COM组件
查看>>
cssText基本使用及注意事项
查看>>
走进JEDEC,解读DDR(下)
查看>>
asp.net 动软生成的DbHelperOra
查看>>
Add UserControl into DataGridView
查看>>
cocos2d-x学习笔记(1)
查看>>
Mysql数据库中的EXISTS和NOT EXISTS
查看>>
C++面向对象类的实例题目七
查看>>
模仿百度经验效果
查看>>
关于markdown
查看>>
Project Euler 9
查看>>
事件学习
查看>>
关于Vue修改默认的build文件存放的dist路径
查看>>
时间模块
查看>>
接口测试思路,jmeter,接口测试流程
查看>>