方法是否在序列化后占用空间?

时间:2017-12-13 06:07:20

标签: java serialization deserialization rmi

我有一个类似这样的课程:

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 A_{
    int a;
    int b;
    // copy all the properties in class A
}

3 个答案:

答案 0 :(得分:9)

没有

序列化实际上并不发送类的方法。不同数量的方法不会改变序列化的影响。

答案 1 :(得分:5)

没有。方法定义属于类,它们不会针对不同的对象(该类的实例)进行更改,因此将它们包含在序列化中是没有意义的。

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

因此,总而言之 - 无论你有零方法还是20个方法,每个方法都有100行,它应该对序列化没有任何区别。

答案 2 :(得分:1)

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

但是,如果由于某种原因你在每一端都有不同版本的同一个类,他们需要:

  • 同意serialVersionUID
  • 与对象序列规范的Object Versioining章节中定义的序列化兼容。

一般来说,这不是一个好主意。