Mri*_*hal 5 java serialization deserialization
说,我有一个X具有字段值的类,即
class X implements Serializable {
private int value;
// ...
}
Run Code Online (Sandbox Code Playgroud)
此外,它没有在这里显示的getter和setter.这个类是序列化的.在反序列化中,结束同一类具有值字段,访问说明符是公共的.此外,这个类没有getter和setter.所以,我的问题是:
一些好的链接Java序列化算法揭示了
1)如果字段的访问说明符发生更改,或者在反序列化结束时类中缺少部分或全部方法,反序列化是否会失败?
序列化使用Using Reflection进行
Java使用.检测对类的更改
private static final long serialVersionUID
默认值涉及哈希码.序列化根据以下信息创建long类型的单个哈希码:
类名和修饰符
类实现的任何接口的名称
除私有方法和构造函数之外的所有方法和构造函数的描述
除私有,静态和私有瞬态之外的所有字段的描述
序列化机制的默认行为是经典的"更安全而不是抱歉"策略.序列化机制使用suid(默认为极其敏感的索引)来告知类何时发生了更改.如果是这样,序列化机制拒绝使用使用旧类序列化的数据创建新类的实例.
2)在反序列化期间为字段分配值的机制是什么?
| 归档时间: |
|
| 查看次数: |
18096 次 |
| 最近记录: |