如何在java中序列化ArrayLIst而不会出错?

我只是想输出一个先前创建的ArrayList来序列化它以备将来存储。

但是当我这样做时,我得到了runTime错误“notSerialisableException:Department。

他们是一种序列化arrayList的特殊方式吗?

有人能够告诉我为什么我可能会收到此错误。

这是代码:

import java.awt.*; import java.util.*; import java.io.*; import java.io.Serializable; public class tester1ArrayListObjectSave { private ArrayList  allDeps = new ArrayList(); private int choice = 0; private String name; private String loc; Department theDepartment; Scanner scan; public static void main(String[] args) { new tester1ArrayListObjectSave(); } public tester1ArrayListObjectSave() { scan = new Scanner(System.in); options(); } public void options() { System.out.println("wadya wanna do"); System.out.println("1. create a new department"); System.out.println("2. read from text file"); System.out.println("4. save it to system as a serializable file"); System.out.println(". read from text file"); System.out.println("3. to exit"); choice = scan.nextInt(); workOutOptions(); } public void workOutOptions() { if (choice ==1) { createNewEmp(); } else if (choice ==2) { try { readTextToSystem(); } catch (IOException exc) { System.out.println("uh oh their was an error: "+exc); } } else if (choice == 3) { System.exit(0); } else if (choice ==4) { try { createSerialisable(); } catch (IOException exc) { System.out.println("sorry could not serialise data cause of this:"+exc); } } else { System.out.println("do nothing"); } } public void createNewEmp() { System.out.println("What is the name"); name = scan.next(); System.out.println("what is the chaps loc"); loc = scan.next(); try { saveToSystem(); } catch (IOException exc) { // do something here to deal with problems } theDepartment = new Department(name,loc); allDeps.add(theDepartment); options(); } public void saveToSystem() throws IOException { FileOutputStream fos = new FileOutputStream( "backUp.txt", true ); PrintStream outFile = new PrintStream(fos); System.out.println("added to system succesfully"); outFile.println(name); outFile.println(loc); outFile.close(); options(); } public void readTextToSystem() throws IOException { Scanner inFile = new Scanner ( new File ("backUp.txt") ); while (inFile.hasNextLine()) { name=inFile.nextLine(); System.out.println("this is the name: "+name); loc = inFile.nextLine(); System.out.println("this is the location: "+loc); Department dDepartment = new Department(name,loc); allDeps.add(dDepartment); options(); } System.out.println(allDeps); } public void createSerialisable() throws IOException { FileOutputStream fileOut = new FileOutputStream("theBkup.ser"); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(allDeps); options(); } } 

ArrayList不是问题; 你的Department对象是。

您需要在该对象中实现Serializable接口。