2014-11-29 2 views
1

Я новичок в Java. Одна из проблем, которые у меня есть, - это использовать arraylist в разных классах. класс MainWindow прочитать файл в ArrayListчитать и писать LinkedList of Bject

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); 
    } 
}  

Я хочу использовать тот же ArrayList пл, чтобы добавить новый продукт в список без overwritting в ArrayList. Я не знаю, как это сделать, не загружая один и тот же файл в каждом классе. Мне нужен ArryList с содержимым loade из файла

ответ

0

Вам необходимо импортировать его для каждого class, в котором вы нуждаетесь. Но, если вы очень часто используя ArrayList и только ArrayList, то вы можете создать class, как:

public class MySharedArrayList { 
    public static ArrayList<> pl; 
} 

, а затем вы можете импортировать этот маленький файл везде, но я считаю, что мы чрезмерно думая, что это , Не оптимизируйте преждевременно. Эта микроскопическая проблема, возможно, никогда не возникнет, поэтому это может быть пустой тратой времени, чтобы справиться с этим.

Смежные вопросы