Por que esse código Java cria um erro de estouro de pilha?
O código abaixo produz uma pilha sobre erro de fluxo quando é executado. No entanto, se remover qualquer um dos
static final GenerateStackOverflow E1 = new GenerateStackOverflow("value1");
final GenerateStackOverflow E2 = new GenerateStackOverflow("value2");
Ele é executado sem um erro de fluxo sobre a pilha. Como posso obter um erro de estouro de pilha se eu tiver as duas linhas acima, mas nenhum erro se apenas uma das linhas estiver na classe?
public class GenerateStackOverflow {
private final String value;
static final GenerateStackOverflow E1 = new GenerateStackOverflow("value1");
final GenerateStackOverflow E2 = new GenerateStackOverflow("value2");
public GenerateStackOverflow(String value) {
System.out.println("GenerateStackOverflow.GenerateStackOverflow()");
this.value = value;
}
public String getValue() {
return value;
}
public static void main(String[] args) {
GenerateStackOverflow.class.getName();
}
}