1、 对象序列化 实现Serializable接口 将对象输出倒对象流中(相当于深克隆,能从对象流中读出整个对象网络)
将一个对象 将对象序列化倒一个对象流中两次,
再从对象流中读出,取出的两个对象指向同一个对象(与序列化之前的对象不一致,相当于克隆)
将一个对象序列化倒两个对象流中,再次取出时两个对象不一致
2、 不可控的序列化 实现 Serializable 接口 标记对象可序列化
java虚拟机将整个对象信息写入流中 从对象流中读出对象信息并自动构建新的对象
将对象的属性声明为transient 表示属性是临时的 序列化时 不会将此属性写入对象流中
如 用户类中的密码属性声明为transient防止对象流中的关键信息被网络拦截而泄漏。
3、 可控的序列化 实现 Externalizable 接口
在实现的writeExternal(ObjectOutput out) 方法中控制 写入的对象属性
在实现的readExternal(ObjectInput in) 方法中读出对象属性
java虚拟机调用writeExternal将可控的对象信息写入流中
调用 readExternal方法读出对象流中的对象信息并自动构建新的对象
将一个对象 将对象序列化倒一个对象流中两次,
再从对象流中读出,取出的两个对象指向同一个对象(与序列化之前的对象不一致,相当于克隆)
将一个对象序列化倒两个对象流中,再次取出时两个对象不一致
2、 不可控的序列化 实现 Serializable 接口 标记对象可序列化
java虚拟机将整个对象信息写入流中 从对象流中读出对象信息并自动构建新的对象
将对象的属性声明为transient 表示属性是临时的 序列化时 不会将此属性写入对象流中
如 用户类中的密码属性声明为transient防止对象流中的关键信息被网络拦截而泄漏。
3、 可控的序列化 实现 Externalizable 接口
在实现的writeExternal(ObjectOutput out) 方法中控制 写入的对象属性
在实现的readExternal(ObjectInput in) 方法中读出对象属性
java虚拟机调用writeExternal将可控的对象信息写入流中
调用 readExternal方法读出对象流中的对象信息并自动构建新的对象