【发布时间】:2012-10-30 23:38:49
【问题描述】:
我了解序列化是保存对象实例的一种快速方法,包括对象内的所有变量,不包括静态引用和那些用瞬态关键字标记的引用。
我不太擅长 I/O,我的应用程序有大约 50 个类,其中有三个不同的对象(其中包含对象)。
例如,我有一个动物类、员工类、车辆类。所有这些都包含实例对象,在运行时,它们包含自己的子类、方法等。
我的问题是,用序列化保存所有这些信息的最简单方法是什么?我已经和我的教授讨论过这个问题,他提出了一个类似于“Data.class”的包含类的东西,它在所有东西中都有它的“手”,然后对其进行序列化。这最终会将它引用的每个对象保存到 .ser 文件中。
我想过制作“Data.class”,然后制作我所有的 50 个类,扩展 Data。 然后让我的保存方法执行类似的操作
public void saveData(){
Data myData = new Data()
try
{
FileOutputStream fileOut =
new FileOutputStream("Data.ser");
ObjectOutputStream out =
new ObjectOutputStream(fileOut);
out.writeObject(myData);
out.close();
fileOut.close();
}catch(IOException i)
{
i.printStackTrace();
}
}
但是,我似乎无法让它工作。我相信这是因为我正在创建一个空白的 Data 实例,它只包含所有子类的默认值。我确实打算保存时调用该函数(在填充了相应对象中的所有值之后),但是我做错了,无法弄清楚是什么。
任何帮助将不胜感激。当然,我不必手动序列化三种不同类型对象的每个实例吗?已经超过 300 了,我不想那样做。
另外,我确实给了 Data 一个 serialVersionID 并实现了 Data 的可序列化接口。
【问题讨论】:
标签: java serialization io