我在理解为何无法解决问题以及如何解决问题时遇到了问题。我正在尝试在构造函数中创建一个空的restaurantlist对象。
这是下面的问题:
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
答案 0 :(得分:0)
您正在ResturantList的构造函数中调用RestaurantList的构造函数。最终将导致对此构造函数的无限调用。
答案 1 :(得分:0)
构造函数在构造函数中引用自己。
一个空的构造函数将返回一个空的RestaurantList对象。
public RestaurantList() {}
答案 2 :(得分:0)
您正在递归调用构造函数内部的构造函数。每次执行此操作时,您都将创建一个新的堆栈框架,并且由于堆栈不是无止境的,而代码却是无限的,最终会导致堆栈溢出。
在构造函数内部调用new RestaurantList()
是没有意义的。也许您打算使用super()
调用父构造函数?
答案 3 :(得分:0)
只需为RestaurantList()提供一个空白/空构造函数。您的实现当前是递归的。因此,stackoverflow!
感谢您有机会在Stackoverflow中回答有关stackoverflow的问题:-)
答案 4 :(得分:0)
您还可以执行静态方法来提供实例。
public class MyClass {
..
..
public static MyClass getInstance() {
return new MyClass();
}
}
您可以这样称呼它:
MyClass mc = MyClass.getInstance();