如題,作者一開始也遇到了這個比較棘手的問題,
話不多說,直接說解決方案,
這里使用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陣列不一定符合物件輸入流的規則,也就不能決議出物件了,(就是流中的一些前綴)
如果有幫助勞煩點個贊~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/514055.html
標籤:Java
上一篇:匯出Excel添加水印
下一篇:插入排序演算法步驟和思路
