Java 读取和写入对象的LinkedList

Java 读取和写入对象的LinkedList,java,arraylist,Java,Arraylist,我是Java的初学者。我遇到的问题之一是在不同的类中使用arraylist。 MainWindow类将文件读取到arraylist public class MainWindow extends javax.swing.JFrame { ArrayList <Product> pl; List<Product> list = new ArrayList<>(); boolean test = false; ObjectOutputStream oos;

我是Java的初学者。我遇到的问题之一是在不同的类中使用arraylist。 MainWindow类将文件读取到arraylist

public class MainWindow extends javax.swing.JFrame {

ArrayList <Product> pl;
List<Product> list = new ArrayList<>();

boolean test = false;

ObjectOutputStream oos;
ObjectInputStream ois;

private String file ="C://temp//Data.dat";
String number ="";


public MainWindow() {
    initComponents();
    pl = new ArrayList<>();
    try {
        ois = new ObjectInputStream(new FileInputStream(file));
        do{
            list = (ArrayList<Product>) ois.readObject();
            for(int i =0; i < list.size(); i++){
                pl.add(list.get(i));

            }
            for(Product px : pl){
                number = px.getpNumber();
                System.out.println(px);
                System.out.println(number);

            }
            System.out.println(pl);

            //System.out.println(table);
        }

        while(test = false);


    } catch (FileNotFoundException ex) {
        Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
        System.out.println("file not founf");
    } 
    catch (EOFException ex){
        System.out.println("end of file");
        ex.printStackTrace();
        test = true;
    }

    catch (IOException | ClassNotFoundException ex) {
        Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
        System.out.println("class not found");
    }
    finally{
        try {
            ois.close();
        } catch (IOException ex) {
            Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
public ArrayList<Product> getProduct(){
    return pl;

private void addPanelActionPerformed(java.awt.event.ActionEvent evt) {                                         
   addPanel ap;
     try {
         ap = new addPanel();
         ap.setVisible(true);
     } catch (ClassNotFoundException ex) {
         Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
     }
}       
public类主窗口扩展了javax.swing.JFrame{
ArrayList pl;
列表=新的ArrayList();
布尔检验=假;
对象输出流oos;
目的输入流ois;
私有字符串file=“C://temp//Data.dat”;
字符串编号=”;
公共主窗口(){
初始化组件();
pl=新的ArrayList();
试一试{
ois=新对象输入流(新文件输入流(文件));
做{
list=(ArrayList)ois.readObject();
对于(int i=0;i
我希望使用相同的Arraylist pl将新产品添加到列表中,而不覆盖Arraylist。
如果不在每个类中加载相同的文件,我不知道如何才能做到这一点。我需要ArryList和文件中的loade内容。你应该为每个
类导入它。但是,如果你经常使用
ArrayList
,并且只使用
ArrayList
,那么你可以创建一个
类,如:

public class MySharedArrayList {
    public static ArrayList<> pl;
}
公共类MySharedArrayList{
公共静态数组列表pl;
}
然后你可以到处导入这个小文件,但我相信我们考虑得太多了。不要过早优化。这个微观问题可能永远不会出现,因此处理它可能是浪费时间