[英]Get ArrayList from another Class
我想做的是:-掃描目錄-對於找到的每個文件夾,將其名稱添加到ArrayList-將此ArrayList放入Main Class並打印。
這是我的ScanDirs課程:
import java.io.File;
import java.util.ArrayList;
public class ScanDirs {
private ArrayList<String> locations;
public void scan() {
File rootDir = new File("./src/data");
locations = new ArrayList<String>();
for (File f : rootDir.listFiles()) {
String fName = f.getName();
locations.add(fName);
}
}
public ArrayList<String> getScan(){
return locations;
}
}
這是主班:
import java.util.ArrayList;
public class Main {
private static ScanDirs scanObject;
public static void main(String[] args) {
scanObject = new ScanDirs();
ArrayList<String> list = scanObject.getScan();
System.out.println(list);
}
}
我的輸出是:null為什么會發生這種情況? 提前致謝
您在代碼的任何地方都沒有調用scan()
方法。 因此,簡單地調用getScan()
將導致未初始化的位置值,即null
。
你可以做的是簡單地調用scan()
之前調用方法getScan()
方法,如:
scanObject = new ScanDirs();
scanObject.scan(); // calling scan method
ArrayList<String> list = scanObject.getScan();
System.out.println(list);
因為ScanDirs()
構造函數使用的是默認構造函數(它將所有內容設置為默認值),所以locations
列表將設置為null。 如果要將位置列表設置為某些內容,請為ScanDirs類創建一個構造函數:
public ScanDirs(ArrayList<String> locations){
this.locations = locations;
}
或者您也可以這樣做:
public ScanDirs(){
locations = new ArrayList<String>();
this.scan();
}
下面的代碼將為您做以下更改getScan方法
public ArrayList<String> getScan(){
this.scan();
return locations;
}
並進行更改以提高可讀性。
File folder = new File("./src/data");
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
location.add(listOfFiles[i].getName());
}
您必須在main.java
文件中調用Scan()
方法,或者需要將其添加到ScanDirs
類的構造函數中。
嘿,您還沒有在任何地方調用scan()
。 因此,您應該在調用getScan()
之前在main()中添加此語句。
scanObject.scan();
這肯定會使其運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.