方法在序列化后是否需要 space?

Does methods takes space after serialization?

我有一个像这样的class:

class A{
    int a;
    int b;
    // a lot more properties...

    void methodA(){
       // very long method
    }
    void methodB(){
       // very long method
    }
    // a lot more methods...
}

有一次我需要序列化此 class 的实例并通过网络将其发送到另一个节点。在另一个节点,只需要属性,不需要方法。由于通过网络发送数据很昂贵,为了轻量级,我是否应该制作另一个像下面这样的中间体 class 来剥离所有方法并发送这个 class 的序列化实例?

class A_{
    int a;
    int b;
    // copy all the properties in class A
}

没有

序列化实际上并不发送class的方法。不同数量的方法不会改变序列化的效果。

没有。方法定义属于 class,它们不会因不同的对象(class 的实例)而改变,因此将它们包含在序列化中没有意义。

但是,每个对象的属性可能不同,因此它们被序列化。

因此,总而言之 - 无论您有 0 个方法还是 20 个方法,每个方法有 100 行,这对序列化绝对没有影响。

没有。方法不参与序列化。

但是,如果由于某种原因您在两端有相同 class 的不同版本,他们需要:

  • 同意serialVersionUID,并且
  • 按照对象序列化规范的对象版本化章节中的定义与序列化兼容。

总的来说这不是一个好主意。