最病 A The Externalizable Interface n An Externalizable class can optionally define the following methods a writeReplace a readResolve Noe:声明类实现 Externalizab/e接/会有重大的安全风 险。 write external列 eadexterna()方法声明为 public, 恶意类可以用这些方法读取和写入对象数据。如果对象 包含数感信息,则要格外小心 Institute of Computer Software 2021/1/28 Nanjing University
The Externalizable Interface An Externalizable class can optionally define the following methods: writeReplace readResolve 2021/1/28 Institute of Computer Software Nanjing University 18 Note: 声明类实现Externalizable接口会有重大的安全风 险。writeExternal()与readExternal()方法声明为public, 恶意类可以用这些方法读取和写入对象数据。如果对象 包含敏感信息,则要格外小心
最病 区别 a Serializable 口 Externo| lizable 口自动存储必要信息, 口只保存被存储的类的 用以反序列化被存储 标识,完全由程序员 的实例 完成读取和写入工作 口优点 优点 内建支持 ■开销较少 易于实现 可能的速度提升 口缺点 口缺点 占用空间过大 虚拟机不提供帮助, ■速度慢 程序员负担重 Institute of Computer Software 2021/1/28 Nanjing University
区别 Serializable 自动存储必要信息, 用以反序列化被存储 的实例 优点 ◼ 内建支持 ◼ 易于实现 缺点 ◼ 占用空间过大 ◼ 速度慢 Externalizable 只保存被存储的类的 标识,完全由程序员 完成读取和写入工作 优点 ◼ 开销较少 ◼ 可能的速度提升 缺点 ◼ 虚拟机不提供帮助, 程序员负担重 2021/1/28 19 Institute of Computer Software Nanjing University
最病 E serialVersionUID a private static final long seria/ VersionUID 口F。 r compability a Invalid Class Exception o It is strongly recommended that all serializable classes explicitly declare serial VersionUID values n serialver; eclipse Institute of Computer Software 2021/1/28 Nanjing University
serialVersionUID private static final long serialVersionUID For compability InvalidClassException It is strongly recommended that all serializable classes explicitly declare serialVersionUID values serialver;eclipse 2021/1/28 Institute of Computer Software Nanjing University 20
最病 A Serialization Principles 口如果该类有父类 口如果父类实现了可序列化接口,则QK 口如果父类没有实现可序列化接口,则父类所有字段 的属性默认情况下不会被序列化 如果该类的某个属性标识为 statica类型的,则该 属性不能序列化; 口如果该类的某个属性采用 transient关键字标识, 则该属性不能序列化 Institute of Computer Software 2021/1/28 Nanjing University
Serialization Principles 如果该类有父类 如果父类实现了可序列化接口,则OK 如果父类没有实现可序列化接口,则父类所有字段 的属性默认情况下不会被序列化 如果该类的某个属性标识为static类型的,则该 属性不能序列化; 如果该类的某个属性采用transient关键字标识, 则该属性不能序列化; 2021/1/28 Institute of Computer Software Nanjing University 21
最病 A Serialization Principles 口在我们标注一个类可以序列化的时候,其以下 属性应该设置为 transient来避免序列化: 口线程相关的属性; 口需要访问○、本地资源、网络资源等的属性; 口没有实现可序列化接口的属性; Institute of Computer Software 2021/1/28 Nanjing University
Serialization Principles 在我们标注一个类可以序列化的时候,其以下 属性应该设置为transient来避免序列化: 线程相关的属性; 需要访问IO、本地资源、网络资源等的属性; 没有实现可序列化接口的属性; 2021/1/28 Institute of Computer Software Nanjing University 22