gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 06:44:07 25 4
gpt4 key购买 nike

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

但是当我尝试这样做时,我收到运行时错误“notSerialisableException: Department.

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

谁能告诉我为什么会出现此错误。

这是代码:

   import java.awt.*;
import java.util.*;
import java.io.*;
import java.io.Serializable;

public class tester1ArrayListObjectSave
{

private ArrayList <Department> allDeps = new ArrayList<Department>();
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 接口(interface)。

关于java - 如何在 java 中序列化 ArrayLIst 而不会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7943197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com