jprotobuf工作原理如下:

  1. 扫描类上的注解的信息,进行分析(与protobuf读取proto文件进行分析过程相似)
  2. 根据注解分析的结果,动态生成java代码进行protobuf序列化与反序列化的功能实现
  3. 使用JDK6及以上的 code compile API进行编译后加载到classloader

github地址:https://github.com/jhunters/jprotobuf

jprotobuf 序列化字节数小,适合网络传输

序列化字段设置:

public class Student{

    private static final long serialVersionUID = -2140242550063332020L;

    @Protobuf(fieldType = FieldType.INT32, order = 1, required = true)
private int age; @Protobuf(fieldType = FieldType.STRING, order = 2, required = false)
private String name; public static int gender = 1; public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public String toString() {
return "Student{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
}

实现序列化:

public class JprotobufDemo {

    public static void main(String[] args) {

        Codec<Student> simpleTypeCodec = ProtobufProxy
.create(Student.class); Student stu = new Student();
stu.setAge(18);
stu.setName("mic");
try {
// 序列化
byte[] bb = simpleTypeCodec.encode(stu);
// 反序列化
Student newStt = simpleTypeCodec.decode(bb);
System.out.println("反序列化结果:"+newStt);
} catch (IOException e) {
e.printStackTrace();
}
}
}

最新文章

  1. mybatis2
  2. java readLine()
  3. iOS小技巧
  4. PSR-0的规范。
  5. Poj 1050 分类: Translation Mode 2014-04-04 09:31 103人阅读 评论(0) 收藏
  6. android -- 蓝牙 bluetooth (四)OPP文件传输
  7. 【.NET】电话号码打星号(隐藏部分)
  8. Java Socket编程基础(1)
  9. java命名
  10. 在Linux环境如何在不解压情况下搜索多个zip包中匹配的字符串内容
  11. Ansible之Playbook详解、案例
  12. Linux文件同步
  13. OPCServer:使用KEPServer
  14. oracle 查询 磁盘使用率
  15. sql backup
  16. 微信小程序获取当前位置
  17. Azkaban学习之路 (一)Azkaban的基础介绍
  18. JavaScript 计时
  19. python selenium expected_conditions使用实例
  20. 3. 哈工大LTP解析

热门文章

  1. TypeSafe Config使用
  2. php mcrypt加密实例
  3. php获取accesstoken和二维码的实现方法
  4. margin在块元素、内联元素中的区别 padding
  5. ModuleNotFoundError: No module named &#39;numpy.core._multiarray_umath&#39; ImportError: numpy.core.multiarray failed to import
  6. MYSQL进阶学习笔记十六:MySQL 监控!(视频序号:进阶_35)
  7. Grunt 自动编译 Less 文件配置
  8. kali本機安裝openvas的血淚史復盤
  9. 【USACO】Optimal Milking
  10. SpringMVC数据绑定一(基本类型、数组和对象(简单对象、层级对象、多参数对象))