【问题标题】:How to get the length of a type after serializization [closed]序列化后如何获取类型的长度[关闭]
【发布时间】:2014-02-15 10:55:24
【问题描述】:

我遇到一个问题,使用Java,我有一个映射,例如map<K,V>KV可以是任意类型,例如intLongStringTime等。

map序列化后,可以得到KV的长度吗?我可以写一个通用的方法来实现这个想法吗?比如:

public long getLength(object obj) {
    //how to get the length of this obj, obj can be any type
}

怎么会这样?

【问题讨论】:

  • 序列化还意味着类和字段的序列化,因此具有固定大小的某些类型的值很少有效。
  • “类型的长度”是什么意思?
  • 我是指任何类型(如Long int Time String...)序列化后,如何获取字节长度,在Serializable接口中,没有获取长度的方法。
  • 澄清一下,你的意思是你想知道序列化之前,结果是之后有多少字节?

标签: java bytesio


【解决方案1】:

不行。

不过你可以近似here's a nice article about a sizeof function

原因是您可以更改默认的二进制序列化(有点冗长)。有这些工具的比较,我上次在这个主题中 Kyro 是最优化的(比默认的 Java 二进制序列化小 10 倍,因为它既不会导出冗余数据,也不会导出任何与验证相关的数据)。

Here's a comparison about the tools.

【讨论】:

    【解决方案2】:

    除了序列化之外,没有办法在序列化后获取对象的长度。

    【讨论】:

    • 嗨 Louis Wasserman,我想在序列化后获取字节长度。
    • 然后你必须序列化它,并得到结果字节的长度。
    猜你喜欢
    • 2011-12-22
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 2020-12-14
    • 2014-08-27
    相关资源
    最近更新 更多