это нормально. когда выполняется рекурсивный вызов, программа не знает, сколько отступов нужно сделать. это всегда делает один отступ. Программа должна знать глубину иерархии вашего списка.
Я имею в виду, когда устройство вызывает свой дисплей, оно должно делать отступ два раза. потому что их элементы должны быть двойными. но у него нет этой информации.
, поэтому вы можете создать поле int глубины = 0; для базового объекта. и отредактируйте присоединение следующим образом.
public void attach(MyTest newLoad) {
newLoad.setDepth(this.depth + 1);
attachments.add(newLoad);
}
затем отредактируйте метод отображения следующим образом и добавьте метод отступа.
private void indent(int depth){
if(depth > 0){
System.out.print(" ");
indent(depth-1);
}
}
public void display() {
System.out.print("+ " + toString() + "\n");
for (MyTest load : attachments) {
this.indent(this.depth);
load.display();
}
}
Я не проверял это, но вы получите основную идею из этих примеры