Я получил это исключение.Исключение StackOverflowError в конструкторе
Exception in thread "main" java.lang.StackOverflowError
at java.util.AbstractCollection.<init>(AbstractCollection.java:66)
at java.util.AbstractList.<init>(AbstractList.java:76)
at java.util.ArrayList.<init>(ArrayList.java:151)
Означает ли это, что класс не может содержать объекты как переменную? Но в реализации связанного списка узел может содержать узел, указывающий на себя?
public class Test {
String name;
List<Test> related;
public Test() {
name = "dog";
related = new ArrayList<Test>();
related.add(new Test());
related.add(new Test());
related.add(new Test());
}
public List<Test> relate() {
return related;
}
public String toString() {
return name;
}
public static void main(String[] args) {
Test test = new Test();
for(Test t : test.relate()) {
System.out.println(t);
}
}
}
Что 'нового Test()' делать внутри? –
Это не проблема с тем, что у calss есть свой объект как переменная-член в нем, я думаю, что это из-за рекурсивного вызова метода, вы должны следовать логике, которая выйдет из рекурсивного вызова – Babel