簡體   English   中英

從另一個 class 調用時,Static ArrayList 為空

[英]Static ArrayList being empty when called from another class

在 C 類中,我從 csv 文件中讀取並將它們放入 A 類 object,然后放入 arraylist B 類,它是 ZABCBDC2A2ED4F8EBC40 的子類

public class classC {
    public static ArrayList<classA> arraylist= new ArrayList<>();


    private classC() {
        // do not instantiate
    }
public static ArrayList<classA> readData(File inFile) {

        try {

            Scanner reader = new Scanner(inFile);
            String header = reader.nextLine();
            while (reader.hasNextLine()) {
                String nextLine = reader.nextLine();

                //System.out.println(nextLine);
                String[] tokens = nextLine.split(",");


                String a= tokens[0];
                double b= Double.parseDouble(tokens[1]);
                double c= Double.parseDouble(tokens[2]);
                double d= Double.parseDouble(tokens[3]);
                double e=Double.parseDouble(tokens[4]);

                //store the data in classa object
                classA classa= new classA(a, b, c, d, e);

                //store each object in an arraylist
                arraylist.add(classa);
}

              for (int i = 0; i < arraylist.size(); i++) {   //these prints fine
            System.out.println(arraylist.get(i) + " ");
                                }
                 System.out.println(arraylist.size());

                 return arrayList;
            }
}

然后在 Class BI 嘗試打印數組,但 arraylist 為空

public class classB extends ArrayList<classA> {

    public static ArrayList<classA> arraylist = new ArrayList<>();

   public classB() {
    }

  //here is my method to print
   public void printArray() {
   System.out.println("Elements of ArrayList are:");
    System.out.println(arraylist.size()); //prints 0

}
}

在我的主要方法中

public class Main {
    public static void main(String[] args) {
        File inFile = new File("file.csv");
        readData(inFile);
        classB classb = new classB();
        classb.printArray();

}
}

在 classA 中,我有必要的 getter setter 和 toString 方法來正確打印,我可以從 classC readData 方法打印,但不能從 classB printArray 方法打印。

有人可以告訴我我做錯了什么嗎?

您的 class B 不是 class A 的子類,它是 ArrayList 的子類。 您可能應該將其聲明更改為extends classA 這樣做之后,您還需要刪除 classB 中 arrayList 字段的聲明,因為否則它將掩蓋超類 classA 中同名字段的聲明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM