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