![](/img/trans.png)
[英]How does default constructor used to instantiate object if it's super class no argument constructor has empty body?
[英]Default constructor that creates an empty object of that class
我在理解為什么這不起作用以及如何解決它時遇到問題。 我正在嘗試在我的構造函數中創建一個空的餐廳列表 object。
這是下面的問題:
RestaurantList class 應該用於存儲所有 Restaurant 對象。 這個 class 應該繼承自 LinkedList<Restaurant> class。 class 需要提供一個默認構造函數來創建一個空的 RestaurantList object。
public class RestaurantList extends LinkedList<Restaurant> {
//Default constructor
public RestaurantList() {
RestaurantList rList = new RestaurantList();
}
Exception in thread "main" java.lang.StackOverflowError
您在 ResturantList 的構造函數中調用 RestaurantList 的構造函數。 這將導致創建對該構造函數的無限調用。
構造函數在構造函數中引用自身。
一個空的構造函數將返回一個空的 RestaurantList object。
public RestaurantList() {}
您在構造函數中遞歸調用構造函數。 每次你這樣做時,你都在創建一個新的堆棧幀,並且由於堆棧不是無限的,而你的代碼是無限的,你最終會溢出堆棧。
在構造函數中調用new RestaurantList()
沒有任何意義。 也許您打算使用super()
調用父構造函數?
只需為 RestaurantList() 提供一個空白/空構造函數。 您的實現當前是遞歸的。 因此,堆棧溢出!
感謝您有機會在 Stackoverflow 中回答有關 stackoverflow 的問題:-)
您還可以執行 static 方法來提供實例。
public class MyClass {
..
..
public static MyClass getInstance() {
return new MyClass();
}
}
你會這樣稱呼它:
MyClass mc = MyClass.getInstance();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.