Я создал класс, имитирующий структуру файла для программы (текстовой игры), над которой я работаю.Это упрощенная версия:
public class Dir {
public Dir(String name, Dir[] subdirs) {
this.name = name;
this.subdirs = subdirs;
}
public String name; //directory name
public Dir[] subdirs; //Sub-directories
}
Структура будет создана с использованием чего-то подобного (только намного, намного больше):
private Dir root = new Dir("root",new Dir[]{
new Dir("first",new Dir[]{
new Dir("child1",null),
new Dir("child2",null),
new Dir("child3",new Dir[]{
new Dir("child3-1",null)
})
}),
new Dir("second",null),
});
И, наконец, текущий каталог отслеживается впеременная currentDir и будет произвольно меняться в зависимости от ввода пользователя:
Dir currentDir = root.subdir[0].subdir[3].subdir[0];
Я хочу иметь возможность найти родительский объект данного объекта.В этом случае у currentDir есть родительский объект с именем «child3», у которого есть родительский элемент с именем «first», у которого есть родительский элемент с именем «root», у которого нет родительского элемента.Как лучше это сделать?Кроме того, любые советы о том, как сделать это лучше, приветствуются - у меня большой опыт программирования, но не очень много в Java.
Редактировать:
Я закончил тем, что создал рекурсивную подпрограмму, которая будет запущена после того, как каталоги будут настроены:
private void setParent(Dir thisDir) {
//Loop through every subdir
for(Dir tmp : thisDir.subdirs) {
//set this as the parent on each sub-dir
tmp.parent = thisDir;
//then call setParent on each sub-dir
setParent(tmp);
}
}
Мне все еще нужно отслеживать любые изменения в родительском объекте, если каталог перемещен, ноэто работает, пока, по крайней мере.