Java 如何保存和打开ArrayList?

Java 如何保存和打开ArrayList?,java,swing,arraylist,switch-statement,graphics2d,Java,Swing,Arraylist,Switch Statement,Graphics2d,我正试图保存GraphicObjects的ArrayList,以便以后重新加载。问题是,我无法加载ArrayList,我总是得到一个空的ArrayList,而不是原始的ArrayList。 有像[Line@2f06692f]在原始阵列列表中 以下是我的代码的重要部分: PaintPanel p = new PaintPanel(); ...a lot of code... @Override public void actionPerformed(ActionEvent e) { Arr

我正试图保存
GraphicObjects
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
此时总是空的

这是我的
PaintPanel
类,其中
graphicslist
是我想要保存的

public class PaintPanel extends JPanel {

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

很难说,但在我看来,您的
savedList
actionPerformed
方法的本地作用域中,因此当该方法结束并且没有实际保存时,它超出了作用域

也许可以尝试将
savedList
设置为一个字段?很难用您提供的代码量给出最佳推荐


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

也许可以尝试将
savedList
设置为一个字段?很难用您提供的代码量给出最佳推荐

带有

savedList = p.getGraphicList(); 
您只需将引用复制到完全相同的列表。PaintPanel稍后所做的所有更改也将影响
savedList
变量。请试着把它改成

savedList = new ArrayList<>(p.getGraphicList());
savedList=newarraylist(p.getgraphicslist());
带有

您只需将引用复制到完全相同的列表。PaintPanel稍后所做的所有更改也将影响
savedList
变量。请试着把它改成

savedList = new ArrayList<>(p.getGraphicList());
savedList=newarraylist(p.getgraphicslist());

为了清楚起见,我们谈论的是
com.facebook.model.GraphObject
对象还是您自己的自定义对象?我有自己的界面GraphObject“保存”和“加载”案例是否属于同一个
开关
?如果是,那么当然在“加载”情况下,
savedList
将被初始化,但为清晰起见,我们谈论的是
com.facebook.model.GraphObject
对象还是您自己的自定义对象?我有自己的界面GraphObject“保存”和“加载”情况是否属于同一个
开关?如果是,那么当然在“加载”情况下,
savedList
将被初始化,但清空存储库,durron597解决了我的问题,但这解决了我以后可能遇到的问题。谢谢我用:
savedList=newarraylist(p.getgraphicslist())
是的,我现在明白了,两个不同的问题hanks,durron597解决了我的问题,但这解决了我以后会遇到的问题。谢谢我用:
savedList=newarraylist(p.getgraphicslist())
是的,我现在明白了,两个独立的问题解决了我的问题
savedList
现在是一个全局定义的字段,而不是
actionPerformed
方法中的本地字段。谢谢,这解决了我的问题
savedList
现在是一个全局定义的字段,而不是
actionPerformed
方法中的本地字段。
savedList = new ArrayList<>(p.getGraphicList());