问题描述
|
我有一个疑问,使用原始数据类型而不是包装器计数器部分会对它们的序列化产生任何影响?
例如,我有一班人
public class Person implements Serializable{
private int age;
}
相对于
public class Person implements Serializable{
private Integer age;
}
他们有什么区别?
解决方法
我说的是Java的序列化:
尽管“ 2”是一个原始类型,仅存储变量的值(二进制),但“ 3”对象(使用“ 4”)将存储一些“元数据”,当反序列化发生时,它将看到“ 3”对象。
是的,序列化不仅可以存储对象,还可以存储对象的状态,因此,如果存储,
private Integer value = 5;
该值是\ 3中的\“ wrapped \”(缺少更好的词),并且存储了整个对象。
补充说明:为了不存储对象/变量,请用transient
标记该字段,例如
transient private Integer value = 5;
相关资源:
发现Java序列化API的秘密
, 好吧,确切的序列化格式将稍有不同(只是32位与包含32位和标头的序列化Integer对象),但是两者都将被序列化和反序列化就很好了。
如果将成员数据声明为原始数据类型,那么如果将对象声明为可序列化的,则值将被序列化吗?
是的,所有未标记为“ 8”的内容都将被序列化,包括原语。
你想做什么?