我正在尝试序列化java对象,但我不断收到错误列表。我的程序接受多个值并用它们创建一个类的实例。然后创建的对象存储在StorageSystem类中......它看起来像这样
aCD = new CD(title, artist, playTime, numOfTracks);
store.addItem(aCD);
然后在存储系统中我将存储的对象添加到arrayList ...我还想做的是将对象添加到序列化文件...我的方法是这样做...我要去的这是错误的方式。谢谢...
public void addItem(Item hold) // adds object to the ArrayList
{
itemList.add(hold);
totalStored++;
FileOutputStream f_out;
try
{
FileOutputStream fout = new FileOutputStream("thequeue.ser");
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(hold);
oos.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
答案 0 :(得分:2)
代码显示“正常”。这些是我的观察:
答案 1 :(得分:1)
代码似乎没问题,除了双重的,不清楚的decaration(首先f_out
然后fout
声明并使用了。)
您确定要序列化的类确实实现了Serializable
标记接口吗?在任何情况下,我建议你将整个ArrayList
写入对象输出流,而不是尝试追加单个对象。
答案 2 :(得分:1)
好吧,它不会做你想要的,因为每次打开FileOutputStream
它都会覆盖最后一个文件 - 所以你总是只有一个项目文件。
此外,当您在FileOutputStream
的范围之外声明它时,f_out
的名称为try
,但您会在该范围内创建另一个名为fout
的{{1}}。 / p>
我不确定如果你关闭ObjectOutputStream
代替FileOutputStream
会发生什么 - 我认为它会关闭FileOutputStream
但是我我不确定。