Как я могу вернуть ArrayList и File Array из одного метода? - PullRequest
0 голосов
/ 06 июля 2019

Я хочу вернуть ArrayList и File Array одним методом.Для получения дополнительной информации (не обязательно помогать мне) вы можете прочитать остальные.

Я кодирую свою версию для игры Sokoban.Для этого мне нужно получить список (в моем случае ArrayList) со всеми путями уровней, чтобы я мог получить информацию, а также мне нужен массив файлов, потому что я использовал в предыдущей версии, и чтобы изменить это, потребовались бы часы,Вход для метода является «уровнем» на данный момент.Это каталог с .xsd files.r

Я не могу изменить то, что хочу вернуть.

public static ArrayList<SokobanLevel> loadLevels(String dirPath) throws SokobanException {
    Path dir = 
        FileSystems.getDefault().getPath(dirPath).toAbsolutePath();
    File[] fileFolder = dir.toFile().listFiles();
    ArrayList<SokobanLevel> allLevel = new ArrayList<SokobanLevel>();
    for(int i = 0; i < fileFolder.length; i++) {
        SokobanLevel sl = new 
                SokobanLevel(fileFolder[i].getAbsolutePath());
        sl.setId(i);
        allLevel.add(sl);
    }
    //would like to also return File[] fileFolder
    return allLevel;
}

метод пока работает хорошо.

Ответы [ 2 ]

0 голосов
/ 06 июля 2019

Вы не можете вернуть несколько объектов из одного метода.Вы можете поместить различные объекты в новый класс и затем вернуть его.

0 голосов
/ 06 июля 2019

Просто создайте кортеж так:

Class Result {
   public static final ArrayList list;
   public static final File[] files;

   public Result(ArrayList list,File[] files){
       this.list =list;
       this.files = files;
   }

}

И используйте его так: return new Result(list,files)

Когда вам нужно использовать список: result.list.

Когда вам нужно использовать файлы: result.files.


Это только для чтения, потому что оно соответствует конечному ключевому слову.

...