簡體   English   中英

創建該 class 的空 object 的默認構造函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM