Почему этот код Java создает ошибку переполнения стека?
Приведенный ниже код создает ошибку переполнения стека при его выполнении. Однако, если удалить любой из
static final GenerateStackOverflow E1 = new GenerateStackOverflow("value1");
final GenerateStackOverflow E2 = new GenerateStackOverflow("value2");
Он работает без стека из-за ошибки потока. Почему я получаю ошибку переполнения стека, если у меня есть две вышеупомянутые строки, но нет ошибки, если только одна из строк находится в классе?
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();
}
}