gpt4 book ai didi

java - 如何保存和打开 ArrayList?

转载 作者:行者123 更新时间:2023-12-01 18:32:28 28 4
gpt4 key购买 nike

我正在尝试保存 GraphicObjectsArrayList 以便稍后重新加载。问题是,我无法加载 ArrayList,我总是得到一个空的 ArrayList 而不是原始的 ArrayList。原来的ArrayList中有[Line@2f06692f]这样的对象。

这是我的代码的重要部分:

PaintPanel p = new PaintPanel();
...a lot of code...
@Override
public void actionPerformed(ActionEvent e) {
ArrayList<GraphObject> savedList= new ArrayList<>();
switch (e.getActionCommand()) {
case "Save":
savedList = p.getGraphicList();
break;

这有效,我在 savedList 中得到了 [Line@2f06692f]

但是,当我尝试加载它时:

        ...some cases...
case "Load":
p.setGraphicList(savedList);
break;

这不起作用,savedList 此时始终为空。

这是我的 PaintPanel 类,其中 graphicList 是我要保存的内容。

public class PaintPanel extends JPanel {

public ArrayList<GraphObject> graphicList = new ArrayList<>();
...

我不知道为什么......

这是我的接口(interface) GraphObject:

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

public interface GraphObject extends Serializable {
void paint(Graphics2D g2d, boolean tmp);
void setPaintColor(Color color);
}

最佳答案

很难说,但在我看来,您的 savedList 位于 actionPerformed 方法的本地范围内,因此当方法结束时它会超出范围,并且实际上并没有保存。

尝试将 savedList 创建为一个字段,也许?以您提供的代码量很难给出最佳推荐。

Read more about this in this Scope tutorial

关于java - 如何保存和打开 ArrayList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23544544/

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