要保存自定义对象ArrayList的状态,可以使用序列化和反序列化的方法。下面是一个示例代码:
import java.io.*;
import java.util.ArrayList;
public class SaveArrayListState {
public static void main(String[] args) {
// 创建自定义对象的ArrayList
ArrayList myObjects = new ArrayList<>();
myObjects.add(new MyObject("Object 1"));
myObjects.add(new MyObject("Object 2"));
myObjects.add(new MyObject("Object 3"));
// 保存ArrayList的状态到文件
try {
FileOutputStream fileOut = new FileOutputStream("myObjects.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(myObjects);
out.close();
fileOut.close();
System.out.println("ArrayList的状态已保存到myObjects.ser文件");
} catch (IOException e) {
e.printStackTrace();
}
// 从文件恢复ArrayList的状态
ArrayList restoredObjects = null;
try {
FileInputStream fileIn = new FileInputStream("myObjects.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
restoredObjects = (ArrayList) in.readObject();
in.close();
fileIn.close();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
// 打印恢复后的ArrayList
if (restoredObjects != null) {
for (MyObject obj : restoredObjects) {
System.out.println(obj.getName());
}
}
}
}
class MyObject implements Serializable {
private String name;
public MyObject(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
在上面的示例中,我们创建了一个自定义对象的ArrayList,并将其保存到文件myObjects.ser中。然后,我们从文件中恢复了ArrayList的状态,并打印出恢复后的对象的名称。
要实现对象的序列化,我们需要让自定义对象实现Serializable接口。这个接口没有任何方法,它只是一个标记接口,表示该对象可以被序列化。在这个示例中,MyObject类实现了Serializable接口。
通过使用ObjectOutputStream和ObjectInputStream,我们可以将ArrayList写入到文件中,并从文件中读取出来。这样就实现了保存和恢复ArrayList的状态。
下一篇:保存自定义TF模型时出现TypeError: 无法将81序列化为JSON。无法识别类型<class 'tensorflow.python.framework.ops.EagerTensor'>。