如题,作者一开始也遇到了这个比较棘手的问题。

话不多说,直接说解决方案。

这里使用bytestring,如果是object[]的话则用repeated定义即可。

那么问题又来了,用这个类型怎么做到与java中的object完全转换呢?

目前,作者发现bytestring对于java的object没有现成的序列化和反序列化方案,so直接用java中的对象输入流。

代码示例如下:

Object[] objects = new Object[]{"string", 9, '%', 3.2f, true, 5.1d, false};
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(objects);
byte[] byteArray = bos.toByteArray();
//ByteString bytes = ByteString.copyFrom(byteArray); //protobuf的包
//反序列化由bytestring转为object
//bytes.toByteArray(); //protobuf的包
ByteArrayInputStream byteInt = new ByteArrayInputStream(byteArray);
ObjectInputStream objInt = new ObjectInputStream(byteInt);
Object o = objInt.readObject();
System.out.println(o);

这里可以看到是可以序列化与反序列化的。需要注意的点是对象输入流需要的二进制要用对象输出流的byte数组。因为自定义的byte数组不一定符合对象输入流的规则,也就不能解析出对象了。(就是流中的一些前缀)

如果有帮助劳烦点个赞~


 
												

protobuf怎么处理java中的Object和Object[],protobuf的bytestring和object[]的更多相关文章

  1. Java中泛型Class<T>、T与Class<?>、 Object类和Class类、 object.getClass()和Object.class

    一.区别 单独的T 代表一个类型(表现形式是一个类名而已) ,而 Class<T>代表这个类型所对应的类(又可以称做类实例.类类型.字节码文件), Class<?>表示类型不确 ...

  2. java中的类型安全问题-Type safety: Unchecked cast from Object to ...

    首先,java语言室类型安全的,通常我们遇到这个问题是出现在Object转化为目标类型时, 这个转化并不是安全的.这个问题普遍认为因为使用了jdk1.5或者1.6的泛型, request.getAtt ...

  3. 浅谈java中的祖先类Object

    首先一道题: public class User{ private String name; private int age; public String getName() { return nam ...

  4. Java中到底有没有指针;同时注意引用和指针的区别

    Java中引用的作用类似于指针,但是有区别:()    (1) 指针必然指向一个内存地址,如果你定义的时候不指定,就会乱指(很可能造成安全隐患)但是引用定义出来后默认指向为空.     (2) 指针可 ...

  5. java中synchronized的使用方法与具体解释

    Java语言的keyword.当它用来修饰一个方法或者一个代码块的时候,可以保证在同一时刻最多仅仅有一个线程运行该段代码. 一.当两个并发线程訪问同一个对象object中的这个synchronized ...

  6. Java中的一个类型转换问题

    一.Object转Integer Java中hibernate或者ResultSetHandler查询sql语句, 返回的object类型其实是Long类型, 而不是Integer类型, 因此此时直接 ...

  7. java中的dao模式

    java中Dao模式   什么是DAO   1.Data Access Object(数据存取对象) 2.位于业务逻辑和持久化数据之间 3.实现对持久化数据的访问 DAO模式的作用 1隔离业务逻辑代码 ...

  8. java中equals和hashCode方法随笔二

    前几天看了篇关于java中equals和hashCode方法的解析 1.Object类中的equals方法和hashCode方法. Object类中的equals和hashCode方法简单明了,所有的 ...

  9. Java中的java.lang.Class API 详解

    且将新火试新茶,诗酒趁年华. 概述 Class是一个位于java.lang包下面的一个类,在Java中每个类实例都有对应的Class对象.类对象是由Java虚拟机(JVM)自动构造的. Class类的 ...

  10. Java中 equals和==的区分, new Integer和 非new的区别

    浅谈 equals 和 == ,new出的Integer和非new出的Integer 首先我们要知道在 == 比较的是内存地址值(不包括8种基本数据类型) equals比较的是两个值(内容)是否相同. ...

随机推荐

  1. MSSQL Always Encrypted 加密

    载自:https://zhuanlan.zhihu.com/p/63674006 文档资源:https://docs.microsoft.com/zh-CN/sql/relational-databa ...

  2. 32.自定义Java异常捕获处理类及其使用

    自定义异常捕获处理类 /** * <h1>异常捕捉</h1> * */ public class ExceptionHandler implements Thread.Unca ...

  3. HTML多媒体

    多媒体(一).插入音频.视频和flash在网页中插入音频.视频和flash都是使用embed标签. 语法: <embed src="多媒体文件地址" width=" ...

  4. linux查看是实体机还是虚拟机

    1.判断虚拟机三种方式 1.dmesg|grep -i hypervisor [root@localhost ~]# dmesg|grep -i hypervisor [ 0.000000] Hype ...

  5. 大规模人脸分类—allgather操作(1)

     pytorch中 all_gather 操作是不进行梯度回传的.在计算图构建中如果需要经过all_gather操作后,仍需要将梯度回传给各个进程中的allgather前的对应变量,则需要重新继承to ...

  6. ORACLE查看会话的大小及终止会话

    一.出现PGA不足时,我们可以查看用户会话大小,结束相应会话 方法一 Select Server, Osuser, Name, Value / 1024 / 1024 Mb, s.Sql_Id, Sp ...

  7. 时钟频率(HZ)与数据传输速率(bit/s)的关系-转载

    (24条消息) 时钟频率(HZ)与数据传输速率(bit/s)的关系_子曰小玖的博客-CSDN博客_速率和频率的关系 时钟频率(HZ)与数据传输速率(bit/s)两者是相同的概念.举例:IIC传输位速率 ...

  8. DDD(二)聚合、聚合根、领域服务、应用服务、仓储”和“工作单元”、领域事件、集成事件

    DDD(二)聚合.聚合根.领域服务.应用服务.仓储"和"工作单元".领域事件.集成事件 如果觉得样式不好:跳转即可 http://www.lifengying.site/ ...

  9. centos 7 安装rocketmq 主从

    https://www.cnblogs.com/weianlai/p/14590533.html

  10. MySQL(1): 基本操作

    MySQL 是流行的关系型数据库管理系统之一,特别是在WEB应用方面.推荐用5.6版本. My Sql客户端有很多 还有PHP MyAdmin, 是以web形式控制和操作MySQL数据库的管理工具.是 ...