StackOverflowError não sei porque

Alguem sabe me dizer o porque esta dando StackOverflowError, nao estou estourando nada na pilha “eu acho”.

[code]package inner;

public class Teste {

public static void main(String[] args) {

	A a = new A();
	
	a.a.go(); // aqui da o Stack...
	
	
}

}
[/code]

[code]package inner;

public class A {

public void go(){
	
	System.out.println("Class A Pai");
	
}


class TesteA{
	
	public void go(){
		
		System.out.println("Inner Class TesteA");
		
	}
	
}
	
static class TesteBStatic{
	
	
	public TesteBStatic() {
		System.out.println("Construtor TesteB");
	}
	
	public void go(){
		
		System.out.println("static class TesteB");
		
	}
		
}


A a = new A(){
	
	public void go(){
		
		System.out.println("Anoninmous class a...");
		
	}
	
};

}
[/code]

O problema é que você tem uma chamada recursiva do construtor default da classe A quando você cria a classe anônima. Você definiu em A uma variável do tipo A. Isso é perfeitamente possível. Porém quando você inicializa essa variável com uma subclasse anônima de A você cria a recursão, porque o novo objeto também tem um campo A inicializado com uma subclasse, e por aí vai.

Olá!

acho que assim fica mais fácil visualizar:

[code]
package stackTest;

public class Teste {
public static void main(String[] args) {
A a = new A();
}
}
class A {
A a;
A() {
a = new A();
}
}[/code]

Abs.

[quote=gervas-IO]Olá!

acho que assim fica mais fácil visualizar:

[code]
package stackTest;

public class Teste {
public static void main(String[] args) {
A a = new A();
}
}
class A {
A a;
A() {
a = new A();
}
}[/code]

Abs.[/quote]

Quando a chamada é explícita ela nem compila.

Hum cara é verdade!! Toda vez que eu criar uma classe anônima então e de dentro dessa popria classe eu der um new ClasseQueTemUmaClasseAnonima() vai gerar recursão num vai n?