Ошибка переполнения стека в рекурсивном определении - PullRequest
0 голосов
/ 18 октября 2019

У меня есть определение класса n JAVA.

class ABC 
{ 
    public static final ABC A = new ABC();
    public static final ABC B = new ABC();
}

Когда я вызываю новый ABC (), он работает без ошибок. Но если я уберу слово static, оно приведет к ошибке переполнения стека. Я знаю, что статические поля инициируются один раз. Но в этом случае сама инициализация является рекурсивной. Так что в идеале даже со статическим свойством он должен выдавать ту же ошибку. Можете ли вы кому-нибудь, пожалуйста, объясните. Спасибо!

1 Ответ

1 голос
/ 18 октября 2019

Вы сами ответили на вопрос: статические поля инициируются один раз. Именно поэтому код не войдет в бесконечную рекурсию. Вы можете сами проверить этот факт, подключив отладчик:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...