Google ProtocolBuffer(PB) 简介和实例2-Wire的使用
Wire简介
- 轻量级的protocol buffers,针对移动设备的java库
- (和protoc产生的代码相比较)由Wire生成的代码方法数量将大大减少,这将有助于android应用避免方法数65k的限制
使用方法
- 下载最近的wire jar包,目前最新的版本是wire-compiler-1.7.0-jar-with-dependencies.jar, github上有下载链接
- 编写 .proto 文件,这里直接采用上一篇介绍pb时用到的例子
- 编译 .proto 文件,用wrie生成java类, 命令如下:
java -jar wire-compiler-1.7.0-jar-with-dependencies.jar --proto_path=. --java_out=. addressbook.proto
序列化和反序列化
// 构建对象 PhoneNumber pb = new PhoneNumber.Builder().number("123---adf") .type(PhoneType.HOME).build(); PhoneNumber pb2 = new PhoneNumber.Builder().number("123---adf") .type(PhoneType.MOBILE).build(); List<PhoneNumber> phones = new ArrayList<PhoneNumber>(); phones.add(pb); phones.add(pb2); Person john = new Person.Builder().id(1234).name("John Doe") .email("jdoe@example.com").phone(phones).build(); System.out.println(john.toString()); // 序列化 byte[] johnbyte = john.toByteArray(); // 反序列化 Wire wire = new Wire(); try { Person john2 = wire.parseFrom(johnbyte, Person.class); System.out.println(john2.toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
方法数量对比
- wire产生的代码和protoc产生的代码方法数比是: 82: 508
dd@ubuntu:~/Desktop$ ./jarmethod.sh ‘/home/dd/Desktop/shard_with_win7/pb-wire.jar‘
82
dd@ubuntu:~/Desktop$ ./jarmethod.sh ‘/home/dd/Desktop/shard_with_win7/pb-c.jar‘
508
参考链接
文章来自:http://blog.csdn.net/cheyiliu/article/details/45459353