我想在我的java程序运行时保存一些类。所以如果我再次启动程序,我可以加载它们。它适用于3个类中的2个(除了saveURL之外,save()代码在所有类中都是相同的)。但是这个似乎有一些问题..奇怪的是,save()方法在运行时前2-3次工作,但随后它开始抛出错误..方法调用相隔5-10s,所以不应该是问题。 我该怎么办?我已经将PageLayoutMedia设置为“implements Serializable”..
@SuppressWarnings("serial")
public class DataManager implements Serializable{
private LinkedList<PageLayoutMedia> mediaPages = new LinkedList<PageLayoutMedia>();
public Datamanager(...){ ... }
private void privateSave(){
try{
//delete old save file
MyFileWriter.deleteFile(saveURL);
// Open a file to write to
FileOutputStream saveFile=new FileOutputStream(saveURL);
// Create an ObjectOutputStream to put objects into save file.
ObjectOutputStream save = new ObjectOutputStream(saveFile);
// Now we do the save.
save.writeObject(mediaPages);
// Close the file.
save.close(); // This also closes saveFile.
}
catch(Exception e){
// if we land here - we got an error
}
}
情形:
3次保存() mediaPages有两个元素:抛出错误:(
@SuppressWarnings("serial")
public abstract class PageLayout implements Serializable{
private long ID;
private String URL;
protected static String backgroundColor;
protected static Dimension dim;
protected static String mediaURL;
public PageLayout(Long ID, String URL) {
...
}
}
@SuppressWarnings("serial")
public abstract class PageLayoutMedia extends PageLayout{
private AnzeigeZeitraum zeitraum;
protected Dimension mediaDim;
protected String mediaURL;
protected int borderTop;
public PageLayoutMedia(Long ID, String URL, AnzeigeZeitraum zeitraum, Dimension mediaDim, String mediaURL) {
super(ID, URL);
...
}
}
@SuppressWarnings("serial")
public class PageLayoutFullpicture extends PageLayoutMedia {
public PageLayoutFullpicture(AnzeigeZeitraum zeitraum, Dimension mediaDim, String mediaURL, Long ID, String URL) {
super(ID, URL, zeitraum, mediaDim, mediaURL);
...
}
}
答案 0 :(得分:1)
假设:在第3次保存时,您的PageLayoutMedia
个对象包含的值不是Serializable
。