“你好阿米戈我要对艾莉所讲的内容做一点补充。”有时你需要对序列化过程进行控制。原因如下1) 对象尚未对序列化做好准备其当前内部状态处于变化中。2) 对象包含不可序列化的对象但可以将其转换为易于序列化的形式例如将其保存为字节数组或其他形式。3) 对象要将其所有数据反序列化为一个单元并/或在序列化之前对其进行加密。需要手动执行序列化的原因有很多。但是我们不想失去标准序列化提供的所有优势。毕竟我们的对象可能会使用其他对象。但是如果对象不支持序列化则无法对其进行序列化。针对这种情况也有相应的解决方法Externalizable接口。我们必须感谢富有远见的 Java 创建者。只需用Externalizable接口替换Serializable接口我们的类即可手动管理序列化过程。Externalizable接口有两个方法Serializable接口则没有序列化对象时 Java 机器会调用这两个方法。看起来如下所示代码class Catimplements Externalizable{ public String name; public int age; public int weight;public void writeExternal(ObjectOutput out){out.writeObject(name);out.writeInt(age);out.writeInt(weight); }public void readExternal(ObjectInput in){ name (String) in.readObject(); age in.readInt(); weight in.readInt(); } }是不是想起点什么“天哪这正是我们在考虑序列化之前尝试保存对象的方式。”“这使一切变得简单如果使用标准序列化就足够了则我们只需继承Serializable接口。如果这还不够的话我们将继承Externalizable并编写我们自己的代码来保存/加载对象。”“但是标记为Externalizable的类是否被视为可序列化我们可以使用这种类来‘安全地’存储对可序列化类的引用吗”“可以。如果一个类实现了Serializable或Externalizable则被认为是可序列化的。”“这是一个完美的解决方法。我很喜欢。”“很高兴听到你这样说。但其实远非如此...你应该向汉斯教授询问所有细微差别。这些差别一定存在。他想给你一些阅读材料。”
保存数据/Externalizable(可外部化)·学习笔记
“你好阿米戈我要对艾莉所讲的内容做一点补充。”有时你需要对序列化过程进行控制。原因如下1) 对象尚未对序列化做好准备其当前内部状态处于变化中。2) 对象包含不可序列化的对象但可以将其转换为易于序列化的形式例如将其保存为字节数组或其他形式。3) 对象要将其所有数据反序列化为一个单元并/或在序列化之前对其进行加密。需要手动执行序列化的原因有很多。但是我们不想失去标准序列化提供的所有优势。毕竟我们的对象可能会使用其他对象。但是如果对象不支持序列化则无法对其进行序列化。针对这种情况也有相应的解决方法Externalizable接口。我们必须感谢富有远见的 Java 创建者。只需用Externalizable接口替换Serializable接口我们的类即可手动管理序列化过程。Externalizable接口有两个方法Serializable接口则没有序列化对象时 Java 机器会调用这两个方法。看起来如下所示代码class Catimplements Externalizable{ public String name; public int age; public int weight;public void writeExternal(ObjectOutput out){out.writeObject(name);out.writeInt(age);out.writeInt(weight); }public void readExternal(ObjectInput in){ name (String) in.readObject(); age in.readInt(); weight in.readInt(); } }是不是想起点什么“天哪这正是我们在考虑序列化之前尝试保存对象的方式。”“这使一切变得简单如果使用标准序列化就足够了则我们只需继承Serializable接口。如果这还不够的话我们将继承Externalizable并编写我们自己的代码来保存/加载对象。”“但是标记为Externalizable的类是否被视为可序列化我们可以使用这种类来‘安全地’存储对可序列化类的引用吗”“可以。如果一个类实现了Serializable或Externalizable则被认为是可序列化的。”“这是一个完美的解决方法。我很喜欢。”“很高兴听到你这样说。但其实远非如此...你应该向汉斯教授询问所有细微差别。这些差别一定存在。他想给你一些阅读材料。”