protobuf怎么处理java中的Object和Object[],protobuf的bytestring和object[]
如题,作者一开始也遇到了这个比较棘手的问题。
话不多说,直接说解决方案。
这里使用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[]的更多相关文章
- Java中泛型Class<T>、T与Class<?>、 Object类和Class类、 object.getClass()和Object.class
一.区别 单独的T 代表一个类型(表现形式是一个类名而已) ,而 Class<T>代表这个类型所对应的类(又可以称做类实例.类类型.字节码文件), Class<?>表示类型不确 ...
- java中的类型安全问题-Type safety: Unchecked cast from Object to ...
首先,java语言室类型安全的,通常我们遇到这个问题是出现在Object转化为目标类型时, 这个转化并不是安全的.这个问题普遍认为因为使用了jdk1.5或者1.6的泛型, request.getAtt ...
- 浅谈java中的祖先类Object
首先一道题: public class User{ private String name; private int age; public String getName() { return nam ...
- Java中到底有没有指针;同时注意引用和指针的区别
Java中引用的作用类似于指针,但是有区别:() (1) 指针必然指向一个内存地址,如果你定义的时候不指定,就会乱指(很可能造成安全隐患)但是引用定义出来后默认指向为空. (2) 指针可 ...
- java中synchronized的使用方法与具体解释
Java语言的keyword.当它用来修饰一个方法或者一个代码块的时候,可以保证在同一时刻最多仅仅有一个线程运行该段代码. 一.当两个并发线程訪问同一个对象object中的这个synchronized ...
- Java中的一个类型转换问题
一.Object转Integer Java中hibernate或者ResultSetHandler查询sql语句, 返回的object类型其实是Long类型, 而不是Integer类型, 因此此时直接 ...
- java中的dao模式
java中Dao模式 什么是DAO 1.Data Access Object(数据存取对象) 2.位于业务逻辑和持久化数据之间 3.实现对持久化数据的访问 DAO模式的作用 1隔离业务逻辑代码 ...
- java中equals和hashCode方法随笔二
前几天看了篇关于java中equals和hashCode方法的解析 1.Object类中的equals方法和hashCode方法. Object类中的equals和hashCode方法简单明了,所有的 ...
- Java中的java.lang.Class API 详解
且将新火试新茶,诗酒趁年华. 概述 Class是一个位于java.lang包下面的一个类,在Java中每个类实例都有对应的Class对象.类对象是由Java虚拟机(JVM)自动构造的. Class类的 ...
- Java中 equals和==的区分, new Integer和 非new的区别
浅谈 equals 和 == ,new出的Integer和非new出的Integer 首先我们要知道在 == 比较的是内存地址值(不包括8种基本数据类型) equals比较的是两个值(内容)是否相同. ...
随机推荐
- mybatis bind 标签 覆盖 复杂对象的某个属性值 问题。
需求: 有四个sql 都需要用一个 相同的where 条件,于是定义了一个sql 标签. 然后在每个sql中使用 <include refid="myWhereSql"> ...
- Java之时间类
时间类 Date类 ZonedDateTime: 带时区的时间 ZoneId: 带时区 Instant: 时间戳 日期格式化类 SimpleDateFormat DateTimeFormatter D ...
- 洛谷P4562 [JXOI2018]游戏
题目 https://www.luogu.com.cn/problem/P4562 沉迷水题无法自拔(感觉校赛要大寄特寄qwq) 思路 可以fa现可怜的检查和员工的通风报信类似一个筛法的过程,当区间中 ...
- Python接口测试request
requests安装 用pip安装requests模块 pip install requests 一.Get的使用 格式:get(url, params=None, **kwargs) Get常见查询 ...
- 第一章MySQL架构
1.MySQL架构1.1连接管理与安全性 cpu维护缓存区,存储已就绪的线程,线程驻守在一个cpu上,创建销毁不用重新创建线程.1.2优化与执行 MySQL解析查询进行各种优化包括重写查询.决定表的读 ...
- PostProcess
后处理器: AutowiredAnnotationBeanPostProcess.class 可以处理@Autowired.@Value 如何注册:context.registerBean(xxx.c ...
- python实现字典的排序
var dic = {c:4, a:2, d:3, b:1}; // 定义一个字典 console.log("输出最初的字典元素: "); for(var key in dic){ ...
- 模块一:时间模块、random模块、hashlib模块、日志模块
模块:就是一系列功能的集合体,有以下分类:*解释器内建模块*python标准库(位于python解释器安装目录的lib文件夹下)*第三方模块(通过(pip install 模块名)语法下载到pytho ...
- 在Tomcat中部署Web项目的操作方法(必看篇)
在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Manager Web应用程序 一:部署解包的webapp目录 将Web项目部署到Tom ...
- 数据库tempdb的事物日志已满,原因为“ACTIVE_TRANSACTION”
系统运行过程中,突然报错数据库tempdb的事物日志已满,原因为"ACTIVE_TRANSACTION".导致所有业务崩溃. 接到报警后,进入数据库服务器.检查硬盘空间正常,于是登 ...
