Конструктор по умолчанию, который создает пустой объект этого класса - PullRequest
0 голосов
/ 14 октября 2019

У меня проблемы с пониманием, почему это не работает и как это решить. Я пытаюсь создать пустой объект списка ресторанов в моем конструкторе.

Это проблема ниже:

Класс RestaurantList должен использоваться для хранения всех объектов Restaurant. Этот класс должен наследоваться от класса LinkedList . Класс должен предоставить конструктор по умолчанию, который создает пустой объект RestaurantList.

public class RestaurantList extends LinkedList<Restaurant> {

    //Default constructor
    public RestaurantList() {
        RestaurantList rList = new RestaurantList();
    }

Exception in thread "main" java.lang.StackOverflowError

Ответы [ 5 ]

0 голосов
/ 14 октября 2019

Вы также можете сделать статический метод для предоставления экземпляра.


   public class MyClass {
      ..
      ..
      public static MyClass getInstance() {
           return new MyClass();
      }
   }

Вы бы назвали его так:

     MyClass mc = MyClass.getInstance();
0 голосов
/ 14 октября 2019

Просто есть пустой / пустой конструктор для RestaurantList (). Ваша реализация в настоящее время рекурсивна. Следовательно, переполнение стека!

Спасибо за возможность ответить на StackOverflow: -)

0 голосов
/ 14 октября 2019

Конструктор ссылается на себя в конструкторе.

Пустой конструктор возвращает пустой объект RestaurantList.

public RestaurantList() {}
0 голосов
/ 14 октября 2019

Вы рекурсивно вызываете конструктор внутри конструктора. Каждый раз, когда вы делаете это, вы создаете новый фрейм стека, и поскольку стек не бесконечен, в то время как ваш код, вы в конечном итоге переполняете стек.

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

0 голосов
/ 14 октября 2019

Вы вызываете конструктор RestaurantList внутри конструктора ResturantList. Это приведет к созданию бесконечных вызовов этого конструктора.

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