Вы рекурсивно вызываете конструктор внутри конструктора. Каждый раз, когда вы делаете это, вы создаете новый фрейм стека, и поскольку стек не бесконечен, в то время как ваш код, вы в конечном итоге переполняете стек.
Нет смысла вызывать new RestaurantList()
внутри конструктора. Может быть, вы хотели вызвать родительский конструктор, используя super()
?