方法在序列化后是否需要 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
,并且
- 按照对象序列化规范的对象版本化章节中的定义与序列化兼容。
总的来说这不是一个好主意。
我有一个像这样的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
,并且 - 按照对象序列化规范的对象版本化章节中的定义与序列化兼容。
总的来说这不是一个好主意。