有没有一种方法可以在反序列化之前或之后从流中读取序列化对象的总已用大小?我能找到的唯一方法是将它再次序列化为字节缓冲区,并查看缓冲区占用的总大小。这是可行的,但似乎是浪费资源。编辑:我对对象示例在内存中加载时使用的空间不感兴趣。仅以字节为单位的序列化大小。
62lalag41#
您将无法在反序列化之前确定大小,因为序列化协议不会浪费预先计算输出大小的时间;它只是处理对象直到完成。要在反序列化后读取大小,可以在 ObjectInputStream 以及下面的河流。编辑:如果您确实需要确定预序列化的大小,那么我想您可以序列化为 ByteArrayOutputStream ,并将结果字节写入输出。但这需要发送方和接收方就如何处理字节达成一致。
ObjectInputStream
ByteArrayOutputStream
9udxz4iz2#
序列化大小是它的所有字段和它本身的总和。我假设你有一个很好的方法来检查对象的大小,所以检查对象的大小,然后把所有的字段都加进去。
2条答案
按热度按时间62lalag41#
您将无法在反序列化之前确定大小,因为序列化协议不会浪费预先计算输出大小的时间;它只是处理对象直到完成。
要在反序列化后读取大小,可以在
ObjectInputStream
以及下面的河流。编辑:如果您确实需要确定预序列化的大小,那么我想您可以序列化为
ByteArrayOutputStream
,并将结果字节写入输出。但这需要发送方和接收方就如何处理字节达成一致。9udxz4iz2#
序列化大小是它的所有字段和它本身的总和。我假设你有一个很好的方法来检查对象的大小,所以检查对象的大小,然后把所有的字段都加进去。