我知道序列化是保存对象实例的一种快速方法,包括对象中的所有变量,不包括静态引用和用瞬态关键字标记的引用。
我不太擅长 I/O,我的应用程序有大约 50 个类,其中有三个不同的对象(其中包含对象)。
例如,我有一个Animal Class、Employee Class、Vehicle Class。所有这些都包含实例对象,在运行时,它们包含自己的子类、方法等。
我的问题是,用序列化保存所有这些信息的最简单方法是什么?我已经和我的教授讨论过这个问题,他建议了一个类似于“ 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 的可序列化接口。