I'm trying to understand recursive process in given example.
public class Test{
Test t = new Test();
public static void main(String[] args) {
Test t = new Test();
System.out.println(t);
}
}
Since there is no any default Test constructor created how this method is having stackoverflow eroor?
Doesn't it suppose to have something like that to have stackoverflow error?
public class Test {
Test() {
Test t = new Test();
}
public static void main(String[] args) {
Test t = new Test();
System.out.println(t);
}
}
I understand that in second example the stackoverflow error occurs because of the infinity object creation. No problem in that.
My problem is in example on doesn't we suppose to call the
Test t = new Test();
statement is a constructor body? Otherwise how it called?
Please help me to figure this out?
Thank you.
EDIT.
Given below is the error output for both executions.
Exception in thread "main" java.lang.StackOverflowError
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)
at interview.Test.<init>(Test.java:11)