【问题标题】:Ho do I access an arrayList (that is stored in main class) from another class?如何从另一个类访问 arrayList(存储在主类中)?
【发布时间】:2015-04-24 14:07:25
【问题描述】:

我的目标是读取对象并将其写入文件(使用文件 I/O)。这些对象是存储在动态arrayList 中的用户输入(名称、整数值、双精度值等)。 arrayList 在我的主类中声明。作为对我的程序的进一步改进,我想将这些数据保存在一个文件中,我创建了另一个类ReaderWriter 以实现file I/O

现在如何在ReaderWriter 类中获得arrayList 的引用?

我的应用程序很大。我将展示与我的问题相关的一部分:

主要:

    public static void main(String[] args) {
        System.out.println("WELCOME TO OUR BANK!\n\n");

        List<BankAccount> bankAccounts = new ArrayList<BankAccount>();
}

getter 和 setter 类:

public class BankAccount {

private String name;
private int accNum;
private double initiateAmount;

//constructor
public BankAccount() {

    this.name = null;
    this.accNum = 0;
    this.initiateAmount = 0;

}

public void setName(String name) {
    this.name = name;
.........................
.......................
     ............

读写器:

public void writeToFile(){


    try {
        FileOutputStream fos=new FileOutputStream("C:\\Users\\Jabir Al Fatah\\Documents\\NetBeansProjects\\BankFile.txt");
        ObjectOutputStream oos=new ObjectOutputStream(fos);
        oos.writeObject();//take the arrayList variable
        oos.close();
        fos.close();

    } catch (Exception e) {
        e.printStackTrace();
    }


}

public void readFromFile(){
    try {

        FileInputStream fis=new FileInputStream("C:\\Users\\Jabir Al Fatah\\Documents\\NetBeansProjects\\BankFile.txt");
        ObjectInputStream ois=new ObjectInputStream(fis);
        //make an arrayList to get those object back
        //arrayList

        ois.close();
    } catch (Exception e) {
    e.printStackTrace();
    }


}

【问题讨论】:

  • 作为参数发送还是在构造函数中发送引用?
  • user489041,是问题还是评论?

标签: java file-io arraylist fileinputstream fileoutputstream


【解决方案1】:

你给你的 writeToFile 方法一个具有 ArrayList 类型的参数。现在您在 main 中创建 ReaderWriter 的实例并使用 writeToFile 方法。在 readFromFile 中,您必须添加一个返回语句,该语句也来自 ArrayList 类型。现在你可以使用方法来填充 ArrayList 实例了。

正确代码:

public void writeToFile(ArrayList<BankAccount> accounts){


    try {
        FileOutputStream fos=new FileOutputStream("C:\\Users\\Jabir Al Fatah\\Documents\\NetBeansProjects\\BankFile.txt");
        ObjectOutputStream oos=new ObjectOutputStream(fos);
        oos.writeObject(accounts);
        oos.close();
        fos.close();

    } catch (Exception e) {
        e.printStackTrace();
    }


}

public ArrayList<BankAccount>readFromFile(){
    try {

        FileInputStream fis=new FileInputStream("C:\\Users\\Jabir Al Fatah\\Documents\\NetBeansProjects\\BankFile.txt");
        ObjectInputStream ois=new ObjectInputStream(fis);
        //make an arrayList to get those object back and return the list


        ois.close();
    } catch (Exception e) {
    e.printStackTrace();
    }


}

主要:

     public static void main(String[] args) {
            System.out.println("WELCOME TO OUR BANK!\n\n");

            List<BankAccount> bankAccounts = new ArrayList<BankAccount>();
ReaderWriter rw = new ReaderWriter();
rw.writeToFile(bankAccounts);
List<BankAccount> bankAccounts2 = new ArrayList<BankAccount>();
bankAccounts2 = rw.readFromFile();


    }

【讨论】:

    【解决方案2】:

    传入:

    public static void main(String[] args) {
        System.out.println("WELCOME TO OUR BANK!\n\n");
    
        List<BankAccount> bankAccounts = new ArrayList<BankAccount>();
    
        ReaderWriter rw = new ReaderWriter(bankAccounts);
    }
    

    【讨论】:

      猜你喜欢
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      相关资源
      最近更新 更多