簡體   English   中英

為什么在構造函數中調用此函數會產生stackoverflow錯誤?

[英]Why calling this function in the constructor creates stackoverflow error?

嗨,我有一個Person類,它有一個方法fatherComesFirst ,它實例化Person father 但是,當我在構造函數中調用此方法時, jvm為什么會引發stackoverflow錯誤? 我是初學者。 盡管我相信到目前為止我是正確的。

我的代碼。

package intermediate;

public class Person {

    //getters & setters

    private String firstName;

    private String lastName;

    public Person(String firstName, String lastName){
        this.firstName = firstName;
        this.lastName = lastName;
        fatherComesFirst("",lastName);
    }

    public void fatherComesFirst(String firstName, String lastName){
        Person father = new Person(firstName,lastName);
        System.out.println(father.getFirstName()+" "+father.getLastName());
    }

}

因為每當您創建Person()類的實例時,它都會調用函數fatherComesFirst() ,該函數在該函數的第一行上創建同一類的另一個實例。 這是一個無限循環。

這本質上是一個無限循環。 每當構造函數被命中時,它都會調用一個實例化另一個Person的函數。 當實例化此Person時,它還會調用與實例化另一個Person相同的函數,在構造中,該函數也會調用該函數...那么您就會明白。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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